Skip to main content
Glama

Server Details

Public Warhammer 40K rules, datasheets, points and missions; sign in to manage rosters and battles.

Ownership verified
Status
Healthy
Uptime
99.8% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
richardsolomou/praetorium.gg
GitHub Stars
0

TDQS

A3.7/5.0

Scored across 15 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions (battles, rosters, reference, simulator). The reference cluster has mild overlap: list_factions and list_reference both surface factions, and get_reference vs get_reference_record require careful reading to distinguish document-level retrieval from structured record retrieval. Descriptions help, but an agent could still hesitate between these pairs.

Naming Consistency5/5

All 15 tools follow a consistent snake_case verb_noun pattern (create_battle, get_my_roster, list_reference, save_roster, set_roster_visibility, simulate_combat, submit_battle_action). There are no mixed conventions or vague standalone verbs. The naming is predictable and easy to scan.

Tool Count5/5

15 tools is within the well-scoped range for a server covering battles, rosters, reference lookup, unit data, and combat simulation. Each tool earns its place: the reference tools handle distinct lookup stages, and the battle/roster lifecycle tools are split cleanly by operation. No obvious redundancy inflates the count.

Completeness4/5

The surface covers the core lifecycle for battles (create, list, get, act), rosters (save/create/update, get, list, visibility), reference discovery and retrieval, unit listing, and combat simulation. Minor gaps exist: no roster deletion, no battle update or deletion after creation, and no explicit battle-log retrieval tool separate from the seated view. These are workable omissions rather than dead ends.

Available Tools

15 tools
create_battleCreate a battleC
Destructive
Inspect

Creates a battle with named player seats, using the same rules as the site. Requires mcp:write.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
allyIdNo
casualNo
manualNo
guestNamesNo
opponentIdNo
opponentIdsNo
missionPackIdNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds the authorization requirement ('Requires mcp:write'), which is not in the annotations. However, it says nothing about why a create operation is flagged destructive, whether the battle persists, or what confirmation/response behavior to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight, front-loaded sentences with no padding; the create action and the auth requirement lead. The clause 'using the same rules as the site' is vague enough to consume space without adding actionable meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with no output schema and zero schema descriptions, the description is far too thin. An agent cannot reliably populate casual, manual, limit, or the opponent/ally id variants from what is given, and no result shape or validation constraints are conveyed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 8 parameters, so the description carries the full burden and mostly fails it. 'Named player seats' loosely gestures at guestNames/opponentIds, but limit, casual, manual, allyId, opponentId and missionPackId are entirely unexplained and the distinction between opponentId and opponentIds goes unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Creates a battle') plus a scoping detail ('with named player seats'), which an agent can separate from submit_battle_action and get_my_battle. It stops short of naming any sibling or clarifying how it differs from simulate_combat or list_my_battles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives, despite a crowded sibling set containing simulate_combat and submit_battle_action. The only routing signal is the prerequisite 'Requires mcp:write', which tells the agent whether it is authorized but not when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_battleRead one of my battlesB
Read-onlyIdempotent
Inspect

Returns the current seated view of a battle for the signed-in player. Requires mcp:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds the auth requirement ('Requires mcp:read') and notes the view is 'current' (state-dependent), which is useful beyond the annotations, but it does not explain what 'seated view' returns or whether unseen/opponent data is excluded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose before the permission note. No padding, though the second sentence could carry more substance given the gaps elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param read tool with no output schema, an agent still lacks the token semantics and a definition of the returned 'seated view'. Annotations cover safety, so the omission is not critical, but the definition is thinner than the tool warrants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter ('token') with 0% schema description coverage, so the description should compensate but does not mention it at all. 'For the signed-in player' and 'Requires mcp:read' loosely imply the token is the auth credential, but the format and whether it is a battle token or session token are left ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns'), resource ('a battle'), and scope ('for the signed-in player'), which distinguishes it from list_my_battles and create_battle. The term 'seated view' is unexplained jargon, but the core purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus the obvious siblings (list_my_battles for the collection, submit_battle_action for acting on a battle). The only conditional information is the permission prerequisite 'Requires mcp:read', which is a constraint rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_rosterRead my saved rosterA
Read-onlyIdempotent
Inspect

Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds a scope requirement ('Requires mcp:read') that annotations do not convey, which is genuinely useful auth context for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero redundancy, with the core purpose front-loaded before the permission note. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description could briefly say what 'saved choices' comprise, but for a simple single-param read tool with full annotation coverage this is largely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single 'id' parameter has no schema description, so the description must compensate. It only implies that id identifies the roster ('one roster') without stating the format or where the id comes from, leaving a real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('returns the saved choices') scoped to a single roster owned by the signed-in player. The singular 'one roster' implicitly contrasts with the sibling list_my_rosters, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is 'Requires mcp:read', which is a permission prerequisite rather than usage context. Nothing tells the agent when to pick this over list_my_rosters, get_my_battle, or get_reference_record.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_referenceRead one Praetorium reference resultA
Read-onlyIdempotent
Inspect

Reads the complete bounded document returned by search_reference, with its revisions and attribution. A section that withholds rules text lists textSources: the pinned upstream file and record id to fetch if you need the wording.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe stable result id returned by search_reference.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
kindYes
titleYes
factionYes
sectionsYes
revisionsYes
attributionYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: the result is a 'complete bounded document' with revisions and attribution, and sections may withhold rules text, exposing textSources with a pinned upstream file and record id. That redaction-with-pointer behavior is exactly the kind of trait an agent cannot learn from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, and the core identity (the document from search_reference) is front-loaded. The second sentence earns its place by disclosing the textSources fallback rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read with full annotations and an output schema, the description covers what an agent needs: provenance of the id, scope of the returned document, and the textSources edge case. It stops short of nothing essential, though it leaves the overlap with get_reference_record unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single required 'id' parameter is fully documented as the stable result id returned by search_reference. The description restates that the document originates from search_reference but adds no syntax, format, or constraint detail beyond the schema. Baseline 3 applies when the schema carries the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it reads the complete bounded document previously returned by search_reference, including revisions and attribution. That clearly distinguishes it from search_reference and list_reference. However, it does not differentiate it from the similarly named sibling get_reference_record, leaving that ambiguity unresolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the document is 'returned by search_reference', so an agent can infer this follows a search. There is no explicit when-not guidance and no mention of how this differs from get_reference_record or list_reference. The one conditional pointer (textSources when rules text is withheld) is useful but descriptive rather than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_recordRead structured Praetorium reference dataA
Read-onlyIdempotent
Inspect

Returns the structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets. Records that withhold rules text carry textSources pointing at the pinned upstream file and record id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe stable id returned by search_reference or list_reference.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
documentYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real behavioral value beyond the annotations: it explains that records withholding rules text carry textSources pointing at a pinned upstream file and record id, telling the agent how to interpret a partial payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and its payload scope. The category list is longer than strictly necessary given an output schema exists, but it aids selection, so it still earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value documentation is not required, and the description covers purpose plus the non-obvious textSources behavior. The remaining gap is routing versus get_reference, which is a meaningful but narrow omission for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter and schema description coverage is 100%, with the schema explicitly stating the id is 'returned by search_reference or list_reference'. The description adds no syntax, format, or lookup guidance beyond what the schema already provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (returns the structured record behind a search result) and enumerates the record categories it can yield (mission cards, deployments, terrain geometry, detachments, datasheets). It does not name the sibling it competes with — get_reference — so the agent must infer the distinction from context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'behind a search result' implies the id must come from search_reference, and the schema confirms this. However, the description never states when to use this tool versus the similarly named sibling get_reference, which is exactly the ambiguity an agent would face here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_factionsList factions in the Praetorium referenceA
Read-onlyIdempotent
Inspect

Lists the factions that can be used to narrow reference searches.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
factionsYes
revisionsYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds only the idea that these values are filter inputs, and says nothing about ordering, completeness of the list, or caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; every word earns its place for a trivial enumerator.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No parameters and an output schema exists, so return values need not be explained. Combined with the annotations, the description is sufficient, though a note connecting these factions to the narrow-search parameter would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lists) and resource (factions in the Praetorium reference), so the agent knows exactly what is returned. It does not explicitly contrast with siblings like list_units or list_reference, but the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'that can be used to narrow reference searches' implies the downstream use case, telling the agent this feeds search_reference filtering. However, it gives no explicit when-to-use/when-not guidance or names an alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_battlesList my battlesA
Read-onlyIdempotent
Inspect

Lists up to 25 battles with a cursor for the next page. Requires mcp:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
beforeNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely useful context the annotations do not: a hard cap of 25 items per page and a required mcp:read scope. It does not describe the cursor lifecycle or ordering of results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero filler. The pagination limit is front-loaded and the auth requirement follows, each earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and an undocumented nested cursor parameter, an agent still lacks clarity on the exact `before` payload and result ordering. Page size, pagination existence, and auth scope are covered, so the essentials are present but not fully sufficient to call it confidently on a second page.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single `before` parameter is a nested object with `at` and `id` fields that the schema does not describe. The description only alludes to 'a cursor for the next page,' which gestures at the parameter's role but does not explain the {at, id} shape or how to obtain the value. Partial compensation for a documentation gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (lists battles scoped to 'my'), which cleanly distinguishes it from list_factions, list_my_rosters, and list_reference among the siblings. It does not explicitly name an alternative, but the 'my' scope is self-differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus get_my_battle, list_my_rosters, or search_reference. Usage is only implied by the name and description; no conditions, prerequisites, or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_rostersList my saved rostersA
Read-onlyIdempotent
Inspect

Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered without the description. The description adds the mcp:read scope requirement, which is genuine value, but says nothing about ordering, pagination, or what an empty result means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two brief sentences, with the resource scope front-loaded and the permission constraint trailing where it belongs. No filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only list with annotations covering safety and no output schema to explain, the description supplies the essential scope and auth requirements. It stops short of describing result ordering or pagination, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description usefully explains that the target account is implicit ('signed-in'), confirming no account identifier is needed, though nothing further is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lists) and resource (rosters) scoped to the signed-in account, which separates it from the singular get_my_roster and from list_my_battles. It does not explicitly name those siblings, so it is clear but not maximally differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope phrase 'saved to the signed-in Praetorium account' implies when this tool is appropriate, and the permission requirement is useful context. However, there is no explicit comparison to get_my_roster or search-style siblings, so the agent must infer the selection conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_referenceList the Praetorium reference catalogueA
Read-onlyIdempotent
Inspect

Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindsYes
factionsYes
revisionsYes
missionPacksYes
ruleDocumentsYes
corpusRevisionYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered and the description need not restate it. The description adds a small amount of behavioral nuance by scoping results to 'active source revisions', but says nothing about scope limits, pagination, or what is excluded from the catalogue.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the discovery verb first and then the resources returned. There is no filler, redundancy, or trailing boilerplate to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description is not obliged to explain return values, and the enumerated resource kinds give the agent enough to know what it will receive. The only real gap is the absence of sibling routing guidance, which is a usage concern rather than a completeness one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. No additional parameter meaning is needed or expected, and the description correctly avoids inventing filter options that the schema does not expose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Discovers' plus the enumerated resource set (factions, mission packs, rule documents, reference kinds, active source revisions) makes clear this is a catalogue-enumeration tool rooted in the 'Praetorium reference' domain. It does not, however, differentiate itself from siblings like list_factions, list_units, or search_reference, which sound like overlapping listing operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'Discovers available...' suggests this is the browsable entry point for the catalogue, but there is no explicit when-to-use statement, no mention of prerequisites, and no routing guidance versus get_reference, get_reference_record, or search_reference. The agent must infer this is a discovery-first call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_unitsList compact faction units for roster planningA
Read-onlyIdempotent
Inspect

Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Include a detachment to receive its rules, enhancements, upgrades, and stratagems by name, cost, and timing without opening every unit page. Their rules text is at each record’s textSources.

ParametersJSON Schema
NameRequiredDescriptionDefault
factionYesFaction id, URL slug, or display name from list_reference.
battleSizeNoBattle size in points for size-dependent limits.
detachmentNoDetachment id, slug, or display name.

Output Schema

ParametersJSON Schema
NameRequiredDescription
unitsYes
factionYes
revisionsYes
battleSizeYes
detachmentYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description adds genuinely non-structured context: the response is 'bounded', it avoids 'opening every unit page', and rules text lives at each record's textSources. That last point is a real behavioral disclosure about payload location.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the primary return contract, then the optional-detachment payoff, then the pointer to rules text. The middle enumeration is long but each item is a distinct field, so it earns its space; no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not enumerate every returned field, yet it front-loads the key contents anyway. Combined with 100% parameter coverage and a full safety annotation set, the agent has enough to call this correctly; only the lack of alternative routing leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining the payoff of the detachment parameter — its rules, enhancements, upgrades, and stratagems come back with name, cost, and timing — which tells the agent why to pass it rather than just what it accepts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Returns every pickable unit' scoped to a faction, with an enumeration of what each record carries (size costs, composition, attachments, limits, roles, keywords, links). The title adds the roster-planning framing. It never names or contrasts a sibling (search_reference, get_reference_record), so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through the conditional 'Include a detachment to receive its rules, enhancements, upgrades, and stratagems'. There is no explicit when-to-use versus when-to-use-something-else, and no mention of the search_reference/get_reference_record alternatives an agent would otherwise weigh against this.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_rosterCreate or edit my rosterA
Destructive
Inspect

Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. limit is the battle size (1000, 2000 or 3000 points, or 600 for King of the Colosseum), which sets detachment points, enhancement and unit limits. pointsBudget optionally replaces only its points total (500 to 10000, not King of the Colosseum); omit it to keep a saved budget, or send null for the standard total. Requires mcp:write.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
nameYes
prepYes
limitYes
picksYes
sourceNoeditable
visibilityNoprivate
catalogueIdYes
dispositionYes
waivedRulesNo
pointsBudgetNo
detachmentIdsYes
optionalRulesNo
borrowedDetachmentIdNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is partly covered. The description adds real value beyond that: "Saves a complete roster" signals a full overwrite rather than a merge, the pointsBudget omit-vs-null semantics are spelled out, and the mcp:write auth requirement is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and each sentence carries semantic weight with no filler. It is dense and slightly packed with clause-heavy rules, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter, 7-required mutation tool, the description covers create/edit routing, limit, pointsBudget, and auth, which is meaningful. It leaves most parameters unexplained and, with no output schema, says nothing about the return value, so it is only partially complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 14 parameters, so the description must carry the burden, but it only explains id, limit, and pointsBudget. Those three get genuinely useful semantics (battle-size meaning, allowed values, King of the Colosseum exception, replace-vs-keep-vs-reset behavior), but required params like catalogueId, detachmentIds, disposition, picks, and prep are undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Saves a complete roster") and disambiguates the two operating modes: pass id to edit an owned roster, omit id to create one. It is clear on its own but never names or distinguishes itself from relevant siblings such as create_battle or set_roster_visibility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit decision rule (id present = edit, absent = create) and states the mcp:write prerequisite, so an agent knows the context for invoking it. It offers no exclusions or pointers to alternative tools for related tasks like visibility changes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_referenceSearch the Praetorium game referenceA
Read-onlyIdempotent
Inspect

Searches Praetorium’s missions, rules, detachments, and datasheets by name, number, keyword, and value. Returns bounded excerpts with canonical URLs, source revisions, and attribution. Rules text is not included; records point to it upstream.

ParametersJSON Schema
NameRequiredDescriptionDefault
packNo
kindsNo
limitNo
queryYesA name, a printed rule number, an ability, a weapon, or a keyword.
cursorNo
factionNo
documentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
resultsYes
revisionsYes
nextCursorYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's value-add is the output contract: bounded excerpts, canonical URLs, source revisions, attribution, and the explicit limitation that rules text is not returned and must be followed upstream. That is real behavioral context an agent cannot get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: what it searches, what it returns, and the key limitation. Front-loaded with the verb and resource, and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-format detail is a bonus rather than a requirement, and the rules-text caveat is well placed. However, for a 7-parameter tool with near-zero schema coverage, the scoping parameters (pack, faction, document, cursor) are left undocumented in both places, leaving gaps an agent would have to guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 14% across 7 parameters, so the description carries most of the burden. It clarifies query semantics (name, number, keyword, value) and implicitly maps to several kinds enum values via the listed record types, but pack, faction, document, cursor, and limit are entirely unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (searches) and resource set (missions, rules, detachments, datasheets) plus the matching facets (name, number, keyword, value). It doesn't explicitly contrast itself with the nearby siblings list_reference and get_reference_record, so an agent must infer that this is the query-driven variant rather than the browse-by-id variant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The enumeration of matchable facets implies when this tool is appropriate (free-text or printed-number lookups), but there is no explicit when-to-use/when-not or named alternative among list_reference, get_reference, and get_reference_record. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_roster_visibilityChange my roster visibilityB
Destructive
Inspect

Changes the visibility of an owned roster. Requires mcp:write.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
visibilityYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered structurally. The description adds one genuinely useful behavioral fact — the required 'mcp:write' scope — but says nothing about the effect of flipping visibility (e.g., whether a public roster becomes discoverable), which is the main behavioral question for this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the auth requirement. No filler, nothing redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations cover the mutation/safety profile and there is no output schema to explain, so the bar is lower. Still, for a two-parameter mutation with zero schema description coverage, the definition leaves the parameter meaning and the practical effect of the change entirely to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning, yet it never explains 'id' (roster identifier) or that 'visibility' takes one of private/unlisted/public. The schema's enum conveys the allowed values, but the description adds nothing about how the parameters map to the operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('changes the visibility of an owned roster'), which is clearly distinct from sibling tools like save_roster or get_my_roster. It stops short of naming how it relates to the surrounding roster tools, but the action itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It scopes the tool to 'an owned roster,' which is a useful precondition, but there is no guidance on when to reach for this instead of save_roster or other roster siblings, and no mention of what happens when visibility is changed. Usage is implied only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_combatEstimate combat between two unitsA
Read-onlyIdempotent
Inspect

Runs Praetorium's exact combat simulator for one attacking unit, with any attached leaders, against one defending unit at full strength: shooting, melee, and shooting followed by melee. Returns expected models destroyed, expected wounds lost, the chance to destroy the unit, cumulative odds, weapons used, the rule and weapon-mode choices each side can change, datasheet citations, and a simulator link. Passive datasheet rules apply by default; stratagems and conditional rules stay off until chosen. Unsupported mechanics are refused or listed under notCalculated rather than approximated. Like the standalone simulator page, it uses default loadouts and no detachment; unit sizes and attachments must be legal.

ParametersJSON Schema
NameRequiredDescriptionDefault
attackerYes
defenderYes
modifiersNoSituational modifiers the simulator page offers, such as { "all": { "cover": true, "hitModifier": -1 } }, { "melee": { "charged": true } }, or { "target": { "invulnerable": 4 } }.
weaponModesNoWeapon mode choices by key from a previous result, such as a frag or krak profile.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial extra context: it enumerates the returned metrics, discloses that unsupported mechanics are refused or reported under notCalculated rather than approximated, and states the default rules posture. That is exactly the behavioral detail annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action (simulator run) followed by returns, then defaults/limitations. Dense single paragraph where nearly every sentence earns its place, though the return enumeration is somewhat list-heavy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with nested objects and no output schema, the description compensates by listing the expected outputs and the rules-default/refusal behavior. It omits any explanation of the modifiers structure, which is handled only in the schema, leaving a minor completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, so the description must partly compensate. It adds meaning for attached leaders (drawn from canBeLedBy/canBeSupportedBy) and touches rule/weapon-mode choices, but the large nested modifiers object is left entirely to the schema. Adequate but with a clear gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Runs Praetorium's exact combat simulator') plus the exact resource scope (one attacker with attached leaders vs one defender) and enumerates the phases covered (shooting, melee, shoot-then-melee). This clearly separates it from the CRUD/battle siblings, though it never names an alternative tool explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operational context: passive datasheet rules on by default, stratagems/conditional rules off until chosen, default loadouts, no detachment, and legal unit sizes/attachments required. It stops short of an explicit when-to-use-vs-siblings routing statement (e.g., versus create_battle), so it is clear context rather than full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_battle_actionRecord a battle actionB
Destructive
Inspect

Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYes
commandYes
expectedSeqYes

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a non-read-only, destructive, non-idempotent write. The description adds value beyond them by disclosing the auth scope requirement (mcp:write) and the optimistic-concurrency guard, both material to calling it correctly. It stops short of saying what a seq mismatch returns or whether retries are safe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with the core action front-loaded and no filler. Nothing is wasted, though the size is arguably too small for the complexity it fronts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool whose command payload is a deeply nested union of dozens of command kinds, no output schema, and zero schema descriptions, this is significantly under-specified. The write mechanics are covered, but an agent gets no help constructing a valid command.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden, yet it only explains expectedSeq (matching the current log). The token parameter and the enormous command discriminated union — the entire substance of the call — receive no semantic explanation at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("appends a legal battle command") plus a scoping condition, which is enough for an agent to identify this as the action-submission tool. It does not explicitly differentiate itself from siblings like create_battle, but the verb+resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one strong precondition (call only when expectedSeq matches the current log), which is genuine usage guidance. However, it names no alternatives and no explicit when-not, leaving the agent to infer how this differs from other battle-mutating tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedcreate_battle1 field changed
      • addedInput schema / properties / guestNames
        Added value: +{
        +  "items": {
        +    "maxLength": 48,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 2,
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "allEligible": {
        -                    "type": "boolean"
        -                  },
        -                  "areas": {
        -                    "items": {
        -                      "properties": {
        -                        "key": {
        -                          "maxLength": 128,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 5,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "locate-and-deny",
        -                    "type": "string"
        -                  },
        -                  "outsideZone": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "areas",
        -                  "outsideZone",
        -                  "allEligible"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "controlled": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "sensor-sweep",
        -                    "type": "string"
        -                  },
        -                  "marker": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "playerId": {
        -                        "maxLength": 64,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name",
        -                      "playerId"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "marker",
        -                  "controlled"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "consecrations": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "consecrate",
        -                    "type": "string"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "consecrations",
        -                  "qualified",
        -                  "notHome"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "manual": {
        -            "type": "boolean"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "dispositions": {
        -            "items": {
        -              "properties": {
        -                "disposition": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "side": {
        -                  "maximum": 1,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "side",
        -                "disposition"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "type": "array"
        -          },
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon",
        -                              "locate-and-deny",
        -                              "sensor-sweep",
        -                              "consecrate"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "tactical",
        -                      "fixed"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "dispositions": {
        -                    "items": {
        -                      "maxLength": 64,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 16,
        -                    "type": "array"
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "pointsBudget": {
        -                    "maximum": 10000,
        -                    "minimum": 500,
        -                    "type": "integer"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "keywords": {
        -                          "items": {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 60,
        -                          "type": "array"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportCapacity": {
        -                          "properties": {
        -                            "alternatives": {
        -                              "items": {
        -                                "maxLength": 200,
        -                                "type": "string"
        -                              },
        -                              "maxItems": 20,
        -                              "type": "array"
        -                            },
        -                            "conditions": {
        -                              "items": {
        -                                "properties": {
        -                                  "capacity": {
        -                                    "exclusiveMinimum": 0,
        -                                    "maximum": 1000,
        -                                    "type": "integer"
        -                                  },
        -                                  "carries": {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  "maxWounds": {
        -                                    "exclusiveMinimum": 0,
        -                                    "maximum": 1000,
        -                                    "type": "integer"
        -                                  },
        -                                  "wargear": {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "capacity",
        -                                  "carries",
        -                                  "wargear"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "maxItems": 20,
        -                              "type": "array"
        -                            },
        -                            "excluded": {
        -                              "items": {
        -                                "properties": {
        -                                  "except": {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  "keywords": {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "keywords"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "maxItems": 20,
        -                              "type": "array"
        -                            },
        -                            "instead": {
        -                              "anyOf": [
        -                                {
        -                                  "properties": {
        -                                    "capacity": {
        -                                      "exclusiveMinimum": 0,
        -                                      "maximum": 1000,
        -                                      "type": "integer"
        -                                    },
        -                                    "carries": {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    "maxWounds": {
        -                                      "exclusiveMinimum": 0,
        -                                      "maximum": 1000,
        -                                      "type": "integer"
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "capacity",
        -                                    "carries"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "main": {
        -                              "properties": {
        -                                "capacity": {
        -                                  "exclusiveMinimum": 0,
        -                                  "maximum": 1000,
        -                                  "type": "integer"
        -                                },
        -                                "carries": {
        -                                  "maxLength": 200,
        -                                  "type": "string"
        -                                },
        -                                "maxWounds": {
        -                                  "exclusiveMinimum": 0,
        -                                  "maximum": 1000,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "capacity",
        -                                "carries"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "pools": {
        -                              "items": {
        -                                "properties": {
        -                                  "capacity": {
        -                                    "exclusiveMinimum": 0,
        -                                    "maximum": 1000,
        -                                    "type": "integer"
        -                                  },
        -                                  "carries": {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  "maxWounds": {
        -                                    "exclusiveMinimum": 0,
        -                                    "maximum": 1000,
        -                                    "type": "integer"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "capacity",
        -                                  "carries"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "maxItems": 20,
        -                              "type": "array"
        -                            },
        -                            "space": {
        -                              "items": {
        -                                "properties": {
        -                                  "keywords": {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  "moreWoundsThan": {
        -                                    "maximum": 1000,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  "size": {
        -                                    "exclusiveMinimum": 0,
        -                                    "maximum": 1000,
        -                                    "type": "integer"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "size"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "maxItems": 20,
        -                              "type": "array"
        -                            }
        -                          },
        -                          "required": [
        -                            "main",
        -                            "instead",
        -                            "conditions",
        -                            "pools",
        -                            "alternatives",
        -                            "excluded",
        -                            "space"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "lentBy": {
        -                "properties": {
        -                  "id": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 48,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "id",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon",
        -                      "locate-and-deny",
        -                      "sensor-sweep",
        -                      "consecrate"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "tactical",
        -              "fixed"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "add-note",
        -            "type": "string"
        -          },
        -          "text": {
        -            "maxLength": 500,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "text"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "manual": {
        +            "type": "boolean"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dispositions": {
        +            "items": {
        +              "properties": {
        +                "disposition": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "disposition"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          },
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "tactical",
        +                      "fixed"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "dispositions": {
        +                    "items": {
        +                      "maxLength": 64,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 16,
        +                    "type": "array"
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "pointsBudget": {
        +                    "maximum": 10000,
        +                    "minimum": 500,
        +                    "type": "integer"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "keywords": {
        +                          "items": {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 60,
        +                          "type": "array"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportCapacity": {
        +                          "properties": {
        +                            "alternatives": {
        +                              "items": {
        +                                "maxLength": 200,
        +                                "type": "string"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            },
        +                            "conditions": {
        +                              "items": {
        +                                "properties": {
        +                                  "capacity": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  },
        +                                  "carries": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  "maxWounds": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  },
        +                                  "wargear": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "capacity",
        +                                  "carries",
        +                                  "wargear"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            },
        +                            "excluded": {
        +                              "items": {
        +                                "properties": {
        +                                  "except": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  "keywords": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "keywords"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            },
        +                            "instead": {
        +                              "anyOf": [
        +                                {
        +                                  "properties": {
        +                                    "capacity": {
        +                                      "exclusiveMinimum": 0,
        +                                      "maximum": 1000,
        +                                      "type": "integer"
        +                                    },
        +                                    "carries": {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    "maxWounds": {
        +                                      "exclusiveMinimum": 0,
        +                                      "maximum": 1000,
        +                                      "type": "integer"
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "capacity",
        +                                    "carries"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "main": {
        +                              "properties": {
        +                                "capacity": {
        +                                  "exclusiveMinimum": 0,
        +                                  "maximum": 1000,
        +                                  "type": "integer"
        +                                },
        +                                "carries": {
        +                                  "maxLength": 200,
        +                                  "type": "string"
        +                                },
        +                                "maxWounds": {
        +                                  "exclusiveMinimum": 0,
        +                                  "maximum": 1000,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "capacity",
        +                                "carries"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "pools": {
        +                              "items": {
        +                                "properties": {
        +                                  "capacity": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  },
        +                                  "carries": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  "maxWounds": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "capacity",
        +                                  "carries"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            },
        +                            "space": {
        +                              "items": {
        +                                "properties": {
        +                                  "keywords": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  "moreWoundsThan": {
        +                                    "maximum": 1000,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  "size": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "size"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            }
        +                          },
        +                          "required": [
        +                            "main",
        +                            "instead",
        +                            "conditions",
        +                            "pools",
        +                            "alternatives",
        +                            "excluded",
        +                            "space"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "lentBy": {
        +                "properties": {
        +                  "id": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 48,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "tactical",
        +              "fixed"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "add-note",
        +            "type": "string"
        +          },
        +          "text": {
        +            "maxLength": 500,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "draft": {
        +        "properties": {
        +          "borrowedDetachmentId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 128,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "catalogueId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "detachmentIds": {
        +            "items": {
        +              "maxLength": 128,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "maxItems": 3,
        +            "type": "array"
        +          },
        +          "disposition": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "id": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "limit": {
        +            "maximum": 10000,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "name": {
        +            "maxLength": 80,
        +            "type": "string"
        +          },
        +          "optionalRules": {
        +            "items": {
        +              "enum": [
        +                "kotc-borrowed-disposition"
        +              ],
        +              "type": "string"
        +            },
        +            "maxItems": 1,
        +            "type": "array"
        +          },
        +          "picks": {
        +            "items": {
        +              "properties": {
        +                "attachedTo": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "catalogueId": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "choices": {
        +                  "additionalProperties": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "propertyNames": {
        +                    "maxLength": 400,
        +                    "type": "string"
        +                  },
        +                  "type": "object"
        +                },
        +                "entryId": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "models": {
        +                  "maximum": 60,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "note": {
        +                  "maxLength": 500,
        +                  "type": "string"
        +                },
        +                "spreads": {
        +                  "additionalProperties": {
        +                    "additionalProperties": {
        +                      "maximum": 60,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    },
        +                    "propertyNames": {
        +                      "maxLength": 64,
        +                      "type": "string"
        +                    },
        +                    "type": "object"
        +                  },
        +                  "propertyNames": {
        +                    "maxLength": 400,
        +                    "type": "string"
        +                  },
        +                  "type": "object"
        +                },
        +                "toggles": {
        +                  "additionalProperties": {
        +                    "maximum": 1,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "propertyNames": {
        +                    "maxLength": 400,
        +                    "type": "string"
        +                  },
        +                  "type": "object"
        +                }
        +              },
        +              "required": [
        +                "entryId"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 100,
        +            "type": "array"
        +          },
        +          "pointsBudget": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 500,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "reminders": {
        +                    "default": [],
        +                    "items": {
        +                      "properties": {
        +                        "ability": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "description": {
        +                          "maxLength": 10000,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 240,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "timings": {
        +                          "items": {
        +                            "oneOf": [
        +                              {
        +                                "properties": {
        +                                  "firstRoundOnly": {
        +                                    "type": "boolean"
        +                                  },
        +                                  "moment": {
        +                                    "enum": [
        +                                      "phase-start",
        +                                      "phase-end"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "phase": {
        +                                    "enum": [
        +                                      "command",
        +                                      "movement",
        +                                      "shooting",
        +                                      "charge",
        +                                      "fight",
        +                                      "any"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "turn": {
        +                                    "enum": [
        +                                      "your-turn",
        +                                      "opponent-turn",
        +                                      "either"
        +                                    ],
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "moment",
        +                                  "phase",
        +                                  "turn"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              {
        +                                "properties": {
        +                                  "firstRoundOnly": {
        +                                    "type": "boolean"
        +                                  },
        +                                  "moment": {
        +                                    "enum": [
        +                                      "turn-start",
        +                                      "turn-end"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "phase": {
        +                                    "type": "null"
        +                                  },
        +                                  "turn": {
        +                                    "enum": [
        +                                      "your-turn",
        +                                      "opponent-turn",
        +                                      "either"
        +                                    ],
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "moment",
        +                                  "phase",
        +                                  "turn"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              {
        +                                "properties": {
        +                                  "firstRoundOnly": {
        +                                    "type": "boolean"
        +                                  },
        +                                  "moment": {
        +                                    "enum": [
        +                                      "round-start",
        +                                      "round-end"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "phase": {
        +                                    "type": "null"
        +                                  },
        +                                  "turn": {
        +                                    "const": "either",
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "moment",
        +                                  "phase",
        +                                  "turn"
        +                                ],
        +                                "type": "object"
        +                              }
        +                            ]
        +                          },
        +                          "maxItems": 10,
        +                          "minItems": 1,
        +                          "type": "array"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "index": {
        +                              "maximum": 99,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "index",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "whileDestroyed": {
        +                          "type": "boolean"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "ability",
        +                        "description",
        +                        "timings"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "remindersEnabled": {
        +                    "default": true,
        +                    "type": "boolean"
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "source": {
        +            "default": "editable",
        +            "enum": [
        +              "legacy",
        +              "editable",
        +              "praetorium",
        +              "battlebase",
        +              "newrecruit",
        +              "roster-file"
        +            ],
        +            "type": "string"
        +          },
        +          "visibility": {
        +            "default": "private",
        +            "enum": [
        +              "private",
        +              "unlisted",
        +              "public"
        +            ],
        +            "type": "string"
        +          },
        +          "waivedRules": {
        +            "items": {
        +              "enum": [
        +                "points-limit",
        +                "detachments",
        +                "detachment-points",
        +                "kotc-infantry",
        +                "kotc-warlord",
        +                "kotc-epic-heroes",
        +                "kotc-toughness",
        +                "kotc-datasheet-copies"
        +              ],
        +              "type": "string"
        +            },
        +            "maxItems": 8,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "catalogueId",
        +          "detachmentIds",
        +          "disposition",
        +          "limit",
        +          "picks",
        +          "prep"
        +        ],
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "attach-draft-roster",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "draft"
        +    ],
        +    "type": "object"
        +  }
        +]
  2. 4 tool updates
    • Changedget_reference1 field changed
      • addedOutput schema / properties / sections / items / properties / textSources
        Added value: +{
        +  "description": "Where withheld rules text lives upstream; fetch it there if you need the wording.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "source": {
        +        "enum": [
        +          "bsdata",
        +          "game-datacards"
        +        ],
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_reference_record1 field changed
      • addedOutput schema / properties / document / properties / sections / items / properties / textSources
        Added value: +{
        +  "description": "Where withheld rules text lives upstream; fetch it there if you need the wording.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "source": {
        +        "enum": [
        +          "bsdata",
        +          "game-datacards"
        +        ],
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedsearch_reference2 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Words, a printed rule number, an ability, a weapon, or a rules phrase."New value: +"A name, a printed rule number, an ability, a weapon, or a keyword."
      • addedOutput schema / properties / results / items / properties / section / properties / textSources
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "source": {
        +        "enum": [
        +          "bsdata",
        +          "game-datacards"
        +        ],
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "allEligible": {
        -                    "type": "boolean"
        -                  },
        -                  "areas": {
        -                    "items": {
        -                      "properties": {
        -                        "key": {
        -                          "maxLength": 128,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 5,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "locate-and-deny",
        -                    "type": "string"
        -                  },
        -                  "outsideZone": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "areas",
        -                  "outsideZone",
        -                  "allEligible"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "controlled": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "sensor-sweep",
        -                    "type": "string"
        -                  },
        -                  "marker": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "playerId": {
        -                        "maxLength": 64,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name",
        -                      "playerId"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "marker",
        -                  "controlled"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "consecrations": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "consecrate",
        -                    "type": "string"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "consecrations",
        -                  "qualified",
        -                  "notHome"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "manual": {
        -            "type": "boolean"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "dispositions": {
        -            "items": {
        -              "properties": {
        -                "disposition": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "side": {
        -                  "maximum": 1,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "side",
        -                "disposition"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "type": "array"
        -          },
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon",
        -                              "locate-and-deny",
        -                              "sensor-sweep",
        -                              "consecrate"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "tactical",
        -                      "fixed"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "dispositions": {
        -                    "items": {
        -                      "maxLength": 64,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 16,
        -                    "type": "array"
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "pointsBudget": {
        -                    "maximum": 10000,
        -                    "minimum": 500,
        -                    "type": "integer"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "keywords": {
        -                          "items": {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 60,
        -                          "type": "array"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "lentBy": {
        -                "properties": {
        -                  "id": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 48,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "id",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon",
        -                      "locate-and-deny",
        -                      "sensor-sweep",
        -                      "consecrate"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "tactical",
        -              "fixed"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "add-note",
        -            "type": "string"
        -          },
        -          "text": {
        -            "maxLength": 500,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "text"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "manual": {
        +            "type": "boolean"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dispositions": {
        +            "items": {
        +              "properties": {
        +                "disposition": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "disposition"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          },
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "tactical",
        +                      "fixed"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "dispositions": {
        +                    "items": {
        +                      "maxLength": 64,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 16,
        +                    "type": "array"
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "pointsBudget": {
        +                    "maximum": 10000,
        +                    "minimum": 500,
        +                    "type": "integer"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "keywords": {
        +                          "items": {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 60,
        +                          "type": "array"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportCapacity": {
        +                          "properties": {
        +                            "alternatives": {
        +                              "items": {
        +                                "maxLength": 200,
        +                                "type": "string"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            },
        +                            "conditions": {
        +                              "items": {
        +                                "properties": {
        +                                  "capacity": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  },
        +                                  "carries": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  "maxWounds": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  },
        +                                  "wargear": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "capacity",
        +                                  "carries",
        +                                  "wargear"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            },
        +                            "excluded": {
        +                              "items": {
        +                                "properties": {
        +                                  "except": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  "keywords": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "keywords"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            },
        +                            "instead": {
        +                              "anyOf": [
        +                                {
        +                                  "properties": {
        +                                    "capacity": {
        +                                      "exclusiveMinimum": 0,
        +                                      "maximum": 1000,
        +                                      "type": "integer"
        +                                    },
        +                                    "carries": {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    "maxWounds": {
        +                                      "exclusiveMinimum": 0,
        +                                      "maximum": 1000,
        +                                      "type": "integer"
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "capacity",
        +                                    "carries"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "main": {
        +                              "properties": {
        +                                "capacity": {
        +                                  "exclusiveMinimum": 0,
        +                                  "maximum": 1000,
        +                                  "type": "integer"
        +                                },
        +                                "carries": {
        +                                  "maxLength": 200,
        +                                  "type": "string"
        +                                },
        +                                "maxWounds": {
        +                                  "exclusiveMinimum": 0,
        +                                  "maximum": 1000,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "capacity",
        +                                "carries"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "pools": {
        +                              "items": {
        +                                "properties": {
        +                                  "capacity": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  },
        +                                  "carries": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  "maxWounds": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "capacity",
        +                                  "carries"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            },
        +                            "space": {
        +                              "items": {
        +                                "properties": {
        +                                  "keywords": {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  "moreWoundsThan": {
        +                                    "maximum": 1000,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  "size": {
        +                                    "exclusiveMinimum": 0,
        +                                    "maximum": 1000,
        +                                    "type": "integer"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "size"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "maxItems": 20,
        +                              "type": "array"
        +                            }
        +                          },
        +                          "required": [
        +                            "main",
        +                            "instead",
        +                            "conditions",
        +                            "pools",
        +                            "alternatives",
        +                            "excluded",
        +                            "space"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "lentBy": {
        +                "properties": {
        +                  "id": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 48,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "tactical",
        +              "fixed"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "add-note",
        +            "type": "string"
        +          },
        +          "text": {
        +            "maxLength": 500,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  3. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "allEligible": {
        -                    "type": "boolean"
        -                  },
        -                  "areas": {
        -                    "items": {
        -                      "properties": {
        -                        "key": {
        -                          "maxLength": 128,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 5,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "locate-and-deny",
        -                    "type": "string"
        -                  },
        -                  "outsideZone": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "areas",
        -                  "outsideZone",
        -                  "allEligible"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "controlled": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "sensor-sweep",
        -                    "type": "string"
        -                  },
        -                  "marker": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "playerId": {
        -                        "maxLength": 64,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name",
        -                      "playerId"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "marker",
        -                  "controlled"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "consecrations": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "consecrate",
        -                    "type": "string"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "consecrations",
        -                  "qualified",
        -                  "notHome"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "manual": {
        -            "type": "boolean"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "dispositions": {
        -            "items": {
        -              "properties": {
        -                "disposition": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "side": {
        -                  "maximum": 1,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "side",
        -                "disposition"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "type": "array"
        -          },
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon",
        -                              "locate-and-deny",
        -                              "sensor-sweep",
        -                              "consecrate"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "dispositions": {
        -                    "items": {
        -                      "maxLength": 64,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 16,
        -                    "type": "array"
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "pointsBudget": {
        -                    "maximum": 10000,
        -                    "minimum": 500,
        -                    "type": "integer"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "keywords": {
        -                          "items": {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 60,
        -                          "type": "array"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "lentBy": {
        -                "properties": {
        -                  "id": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 48,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "id",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon",
        -                      "locate-and-deny",
        -                      "sensor-sweep",
        -                      "consecrate"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "add-note",
        -            "type": "string"
        -          },
        -          "text": {
        -            "maxLength": 500,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "text"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "manual": {
        +            "type": "boolean"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dispositions": {
        +            "items": {
        +              "properties": {
        +                "disposition": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "disposition"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          },
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "tactical",
        +                      "fixed"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "dispositions": {
        +                    "items": {
        +                      "maxLength": 64,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 16,
        +                    "type": "array"
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "pointsBudget": {
        +                    "maximum": 10000,
        +                    "minimum": 500,
        +                    "type": "integer"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "keywords": {
        +                          "items": {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 60,
        +                          "type": "array"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "lentBy": {
        +                "properties": {
        +                  "id": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 48,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "tactical",
        +              "fixed"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "add-note",
        +            "type": "string"
        +          },
        +          "text": {
        +            "maxLength": 500,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  4. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "allEligible": {
        -                    "type": "boolean"
        -                  },
        -                  "areas": {
        -                    "items": {
        -                      "properties": {
        -                        "key": {
        -                          "maxLength": 128,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 5,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "locate-and-deny",
        -                    "type": "string"
        -                  },
        -                  "outsideZone": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "areas",
        -                  "outsideZone",
        -                  "allEligible"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "controlled": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "sensor-sweep",
        -                    "type": "string"
        -                  },
        -                  "marker": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "playerId": {
        -                        "maxLength": 64,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name",
        -                      "playerId"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "marker",
        -                  "controlled"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "consecrations": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "consecrate",
        -                    "type": "string"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "consecrations",
        -                  "qualified",
        -                  "notHome"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "manual": {
        -            "type": "boolean"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "dispositions": {
        -            "items": {
        -              "properties": {
        -                "disposition": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "side": {
        -                  "maximum": 1,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "side",
        -                "disposition"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "type": "array"
        -          },
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon",
        -                              "locate-and-deny",
        -                              "sensor-sweep",
        -                              "consecrate"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "dispositions": {
        -                    "items": {
        -                      "maxLength": 64,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 16,
        -                    "type": "array"
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "pointsBudget": {
        -                    "maximum": 10000,
        -                    "minimum": 500,
        -                    "type": "integer"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "lentBy": {
        -                "properties": {
        -                  "id": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 48,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "id",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon",
        -                      "locate-and-deny",
        -                      "sensor-sweep",
        -                      "consecrate"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "add-note",
        -            "type": "string"
        -          },
        -          "text": {
        -            "maxLength": 500,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "text"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "manual": {
        +            "type": "boolean"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dispositions": {
        +            "items": {
        +              "properties": {
        +                "disposition": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "disposition"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          },
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "dispositions": {
        +                    "items": {
        +                      "maxLength": 64,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 16,
        +                    "type": "array"
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "pointsBudget": {
        +                    "maximum": 10000,
        +                    "minimum": 500,
        +                    "type": "integer"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "keywords": {
        +                          "items": {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 60,
        +                          "type": "array"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "lentBy": {
        +                "properties": {
        +                  "id": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 48,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "add-note",
        +            "type": "string"
        +          },
        +          "text": {
        +            "maxLength": 500,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  5. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "allEligible": {
        -                    "type": "boolean"
        -                  },
        -                  "areas": {
        -                    "items": {
        -                      "properties": {
        -                        "key": {
        -                          "maxLength": 128,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 5,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "locate-and-deny",
        -                    "type": "string"
        -                  },
        -                  "outsideZone": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "areas",
        -                  "outsideZone",
        -                  "allEligible"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "controlled": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "sensor-sweep",
        -                    "type": "string"
        -                  },
        -                  "marker": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "playerId": {
        -                        "maxLength": 64,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name",
        -                      "playerId"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "marker",
        -                  "controlled"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "consecrations": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "consecrate",
        -                    "type": "string"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "consecrations",
        -                  "qualified",
        -                  "notHome"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "manual": {
        -            "type": "boolean"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon",
        -                              "locate-and-deny",
        -                              "sensor-sweep",
        -                              "consecrate"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "pointsBudget": {
        -                    "maximum": 10000,
        -                    "minimum": 500,
        -                    "type": "integer"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "lentBy": {
        -                "properties": {
        -                  "id": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 48,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "id",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon",
        -                      "locate-and-deny",
        -                      "sensor-sweep",
        -                      "consecrate"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "add-note",
        -            "type": "string"
        -          },
        -          "text": {
        -            "maxLength": 500,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "text"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "manual": {
        +            "type": "boolean"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dispositions": {
        +            "items": {
        +              "properties": {
        +                "disposition": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "disposition"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          },
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "dispositions": {
        +                    "items": {
        +                      "maxLength": 64,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 16,
        +                    "type": "array"
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "pointsBudget": {
        +                    "maximum": 10000,
        +                    "minimum": 500,
        +                    "type": "integer"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "lentBy": {
        +                "properties": {
        +                  "id": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 48,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "add-note",
        +            "type": "string"
        +          },
        +          "text": {
        +            "maxLength": 500,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  6. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "allEligible": {
        -                    "type": "boolean"
        -                  },
        -                  "areas": {
        -                    "items": {
        -                      "properties": {
        -                        "key": {
        -                          "maxLength": 128,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 5,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "locate-and-deny",
        -                    "type": "string"
        -                  },
        -                  "outsideZone": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "areas",
        -                  "outsideZone",
        -                  "allEligible"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "controlled": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "sensor-sweep",
        -                    "type": "string"
        -                  },
        -                  "marker": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "playerId": {
        -                        "maxLength": 64,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name",
        -                      "playerId"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "marker",
        -                  "controlled"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "consecrations": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "consecrate",
        -                    "type": "string"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "consecrations",
        -                  "qualified",
        -                  "notHome"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "manual": {
        -            "type": "boolean"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon",
        -                              "locate-and-deny",
        -                              "sensor-sweep",
        -                              "consecrate"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "pointsBudget": {
        -                    "maximum": 10000,
        -                    "minimum": 500,
        -                    "type": "integer"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon",
        -                      "locate-and-deny",
        -                      "sensor-sweep",
        -                      "consecrate"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "add-note",
        -            "type": "string"
        -          },
        -          "text": {
        -            "maxLength": 500,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "text"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "manual": {
        +            "type": "boolean"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "pointsBudget": {
        +                    "maximum": 10000,
        +                    "minimum": 500,
        +                    "type": "integer"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "lentBy": {
        +                "properties": {
        +                  "id": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 48,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "add-note",
        +            "type": "string"
        +          },
        +          "text": {
        +            "maxLength": 500,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  7. 3 tool updates
    • Changedcreate_battle1 field changed
      • addedInput schema / properties / manual
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Changedsave_roster3 fields changed
      • removedInput schema / properties / picks / items / properties / nickname
        Removed value: -{
        -  "maxLength": 40,
        -  "type": "string"
        -}
      • addedInput schema / properties / pointsBudget
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 10000,
        +      "minimum": 500,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedInput schema / properties / prep / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "reminders": {
        -        "default": [],
        -        "items": {
        -          "properties": {
        -            "ability": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "description": {
        -              "maxLength": 10000,
        -              "type": "string"
        -            },
        -            "key": {
        -              "maxLength": 240,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "timings": {
        -              "items": {
        -                "oneOf": [
        -                  {
        -                    "properties": {
        -                      "firstRoundOnly": {
        -                        "type": "boolean"
        -                      },
        -                      "moment": {
        -                        "enum": [
        -                          "phase-start",
        -                          "phase-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "enum": [
        -                          "command",
        -                          "movement",
        -                          "shooting",
        -                          "charge",
        -                          "fight",
        -                          "any"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "turn": {
        -                        "enum": [
        -                          "your-turn",
        -                          "opponent-turn",
        -                          "either"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "properties": {
        -                      "firstRoundOnly": {
        -                        "type": "boolean"
        -                      },
        -                      "moment": {
        -                        "enum": [
        -                          "turn-start",
        -                          "turn-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "type": "null"
        -                      },
        -                      "turn": {
        -                        "enum": [
        -                          "your-turn",
        -                          "opponent-turn",
        -                          "either"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "properties": {
        -                      "firstRoundOnly": {
        -                        "type": "boolean"
        -                      },
        -                      "moment": {
        -                        "enum": [
        -                          "round-start",
        -                          "round-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "type": "null"
        -                      },
        -                      "turn": {
        -                        "const": "either",
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  }
        -                ]
        -              },
        -              "maxItems": 10,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "unit": {
        -              "properties": {
        -                "index": {
        -                  "maximum": 99,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "whileDestroyed": {
        -              "type": "boolean"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "ability",
        -            "description",
        -            "timings"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 100,
        -        "type": "array"
        -      },
        -      "remindersEnabled": {
        -        "default": true,
        -        "type": "boolean"
        -      },
        -      "secondaries": {
        -        "items": {
        -          "properties": {
        -            "key": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "name": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "name"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 6,
        -        "type": "array"
        -      },
        -      "shareNotes": {
        -        "default": false,
        -        "type": "boolean"
        -      },
        -      "stratagems": {
        -        "items": {
        -          "properties": {
        -            "cp": {
        -              "maximum": 6,
        -              "minimum": 0,
        -              "type": "integer"
        -            },
        -            "key": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "limit": {
        -              "enum": [
        -                "phase",
        -                "turn",
        -                "battle-round",
        -                "battle",
        -                "unlimited"
        -              ],
        -              "type": "string"
        -            },
        -            "name": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "phases": {
        -              "items": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "maxItems": 6,
        -              "type": "array"
        -            },
        -            "turn": {
        -              "enum": [
        -                "your-turn",
        -                "opponent-turn",
        -                "either"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "name",
        -            "cp",
        -            "limit"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 48,
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "stratagems",
        -      "secondaries"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "reminders": {
        +        "default": [],
        +        "items": {
        +          "properties": {
        +            "ability": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "description": {
        +              "maxLength": 10000,
        +              "type": "string"
        +            },
        +            "key": {
        +              "maxLength": 240,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "timings": {
        +              "items": {
        +                "oneOf": [
        +                  {
        +                    "properties": {
        +                      "firstRoundOnly": {
        +                        "type": "boolean"
        +                      },
        +                      "moment": {
        +                        "enum": [
        +                          "phase-start",
        +                          "phase-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "enum": [
        +                          "command",
        +                          "movement",
        +                          "shooting",
        +                          "charge",
        +                          "fight",
        +                          "any"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "turn": {
        +                        "enum": [
        +                          "your-turn",
        +                          "opponent-turn",
        +                          "either"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "properties": {
        +                      "firstRoundOnly": {
        +                        "type": "boolean"
        +                      },
        +                      "moment": {
        +                        "enum": [
        +                          "turn-start",
        +                          "turn-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "type": "null"
        +                      },
        +                      "turn": {
        +                        "enum": [
        +                          "your-turn",
        +                          "opponent-turn",
        +                          "either"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "properties": {
        +                      "firstRoundOnly": {
        +                        "type": "boolean"
        +                      },
        +                      "moment": {
        +                        "enum": [
        +                          "round-start",
        +                          "round-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "type": "null"
        +                      },
        +                      "turn": {
        +                        "const": "either",
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  }
        +                ]
        +              },
        +              "maxItems": 10,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "unit": {
        +              "properties": {
        +                "index": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "whileDestroyed": {
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "ability",
        +            "description",
        +            "timings"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 100,
        +        "type": "array"
        +      },
        +      "remindersEnabled": {
        +        "default": true,
        +        "type": "boolean"
        +      },
        +      "secondaries": {
        +        "items": {
        +          "properties": {
        +            "key": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "name": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 6,
        +        "type": "array"
        +      },
        +      "stratagems": {
        +        "items": {
        +          "properties": {
        +            "cp": {
        +              "maximum": 6,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "key": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "limit": {
        +              "enum": [
        +                "phase",
        +                "turn",
        +                "battle-round",
        +                "battle",
        +                "unlimited"
        +              ],
        +              "type": "string"
        +            },
        +            "name": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "phases": {
        +              "items": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "maxItems": 6,
        +              "type": "array"
        +            },
        +            "turn": {
        +              "enum": [
        +                "your-turn",
        +                "opponent-turn",
        +                "either"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "name",
        +            "cp",
        +            "limit"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 48,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stratagems",
        +      "secondaries"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "allEligible": {
        -                    "type": "boolean"
        -                  },
        -                  "areas": {
        -                    "items": {
        -                      "properties": {
        -                        "key": {
        -                          "maxLength": 128,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 5,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "locate-and-deny",
        -                    "type": "string"
        -                  },
        -                  "outsideZone": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "areas",
        -                  "outsideZone",
        -                  "allEligible"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "controlled": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "sensor-sweep",
        -                    "type": "string"
        -                  },
        -                  "marker": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "playerId": {
        -                        "maxLength": 64,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name",
        -                      "playerId"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "marker",
        -                  "controlled"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "consecrations": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "consecrate",
        -                    "type": "string"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "consecrations",
        -                  "qualified",
        -                  "notHome"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon",
        -                              "locate-and-deny",
        -                              "sensor-sweep",
        -                              "consecrate"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "nickname": {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "nickname": {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon",
        -                      "locate-and-deny",
        -                      "sensor-sweep",
        -                      "consecrate"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "missed": {
        -            "properties": {
        -              "phase": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "round": {
        -                "maximum": 5,
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "turn": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "round",
        -              "phase",
        -              "turn"
        -            ],
        -            "type": "object"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "manual": {
        +            "type": "boolean"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "pointsBudget": {
        +                    "maximum": 10000,
        +                    "minimum": 500,
        +                    "type": "integer"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "add-note",
        +            "type": "string"
        +          },
        +          "text": {
        +            "maxLength": 500,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  8. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "allEligible": {
        -                    "type": "boolean"
        -                  },
        -                  "areas": {
        -                    "items": {
        -                      "properties": {
        -                        "key": {
        -                          "maxLength": 128,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 5,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "locate-and-deny",
        -                    "type": "string"
        -                  },
        -                  "outsideZone": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "areas",
        -                  "outsideZone",
        -                  "allEligible"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "controlled": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "sensor-sweep",
        -                    "type": "string"
        -                  },
        -                  "marker": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "playerId": {
        -                        "maxLength": 64,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name",
        -                      "playerId"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "marker",
        -                  "controlled"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "consecrations": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "consecrate",
        -                    "type": "string"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "consecrations",
        -                  "qualified",
        -                  "notHome"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon",
        -                              "locate-and-deny",
        -                              "sensor-sweep",
        -                              "consecrate"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "nickname": {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "nickname": {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        "note": {
        -                          "maxLength": 500,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon",
        -                      "locate-and-deny",
        -                      "sensor-sweep",
        -                      "consecrate"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "nickname": {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "nickname": {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "missed": {
        +            "properties": {
        +              "phase": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "round": {
        +                "maximum": 5,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "turn": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "round",
        +              "phase",
        +              "turn"
        +            ],
        +            "type": "object"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  9. 2 tool updates
    • Changedsave_roster3 fields changed
      • addedInput schema / properties / picks / items / properties / nickname
        Added value: +{
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • addedInput schema / properties / picks / items / properties / note
        Added value: +{
        +  "maxLength": 500,
        +  "type": "string"
        +}
      • changedInput schema / properties / prep / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "reminders": {
        -        "default": [],
        -        "items": {
        -          "properties": {
        -            "ability": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "description": {
        -              "maxLength": 10000,
        -              "type": "string"
        -            },
        -            "key": {
        -              "maxLength": 240,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "timings": {
        -              "items": {
        -                "oneOf": [
        -                  {
        -                    "properties": {
        -                      "firstRoundOnly": {
        -                        "type": "boolean"
        -                      },
        -                      "moment": {
        -                        "enum": [
        -                          "phase-start",
        -                          "phase-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "enum": [
        -                          "command",
        -                          "movement",
        -                          "shooting",
        -                          "charge",
        -                          "fight",
        -                          "any"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "turn": {
        -                        "enum": [
        -                          "your-turn",
        -                          "opponent-turn",
        -                          "either"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "properties": {
        -                      "firstRoundOnly": {
        -                        "type": "boolean"
        -                      },
        -                      "moment": {
        -                        "enum": [
        -                          "turn-start",
        -                          "turn-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "type": "null"
        -                      },
        -                      "turn": {
        -                        "enum": [
        -                          "your-turn",
        -                          "opponent-turn",
        -                          "either"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "properties": {
        -                      "firstRoundOnly": {
        -                        "type": "boolean"
        -                      },
        -                      "moment": {
        -                        "enum": [
        -                          "round-start",
        -                          "round-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "type": "null"
        -                      },
        -                      "turn": {
        -                        "const": "either",
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  }
        -                ]
        -              },
        -              "maxItems": 10,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "unit": {
        -              "properties": {
        -                "index": {
        -                  "maximum": 99,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "whileDestroyed": {
        -              "type": "boolean"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "ability",
        -            "description",
        -            "timings"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 100,
        -        "type": "array"
        -      },
        -      "remindersEnabled": {
        -        "default": true,
        -        "type": "boolean"
        -      },
        -      "secondaries": {
        -        "items": {
        -          "properties": {
        -            "key": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "name": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "name"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 6,
        -        "type": "array"
        -      },
        -      "stratagems": {
        -        "items": {
        -          "properties": {
        -            "cp": {
        -              "maximum": 6,
        -              "minimum": 0,
        -              "type": "integer"
        -            },
        -            "key": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "limit": {
        -              "enum": [
        -                "phase",
        -                "turn",
        -                "battle-round",
        -                "battle",
        -                "unlimited"
        -              ],
        -              "type": "string"
        -            },
        -            "name": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "phases": {
        -              "items": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "maxItems": 6,
        -              "type": "array"
        -            },
        -            "turn": {
        -              "enum": [
        -                "your-turn",
        -                "opponent-turn",
        -                "either"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "name",
        -            "cp",
        -            "limit"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 48,
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "stratagems",
        -      "secondaries"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "reminders": {
        +        "default": [],
        +        "items": {
        +          "properties": {
        +            "ability": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "description": {
        +              "maxLength": 10000,
        +              "type": "string"
        +            },
        +            "key": {
        +              "maxLength": 240,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "timings": {
        +              "items": {
        +                "oneOf": [
        +                  {
        +                    "properties": {
        +                      "firstRoundOnly": {
        +                        "type": "boolean"
        +                      },
        +                      "moment": {
        +                        "enum": [
        +                          "phase-start",
        +                          "phase-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "enum": [
        +                          "command",
        +                          "movement",
        +                          "shooting",
        +                          "charge",
        +                          "fight",
        +                          "any"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "turn": {
        +                        "enum": [
        +                          "your-turn",
        +                          "opponent-turn",
        +                          "either"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "properties": {
        +                      "firstRoundOnly": {
        +                        "type": "boolean"
        +                      },
        +                      "moment": {
        +                        "enum": [
        +                          "turn-start",
        +                          "turn-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "type": "null"
        +                      },
        +                      "turn": {
        +                        "enum": [
        +                          "your-turn",
        +                          "opponent-turn",
        +                          "either"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "properties": {
        +                      "firstRoundOnly": {
        +                        "type": "boolean"
        +                      },
        +                      "moment": {
        +                        "enum": [
        +                          "round-start",
        +                          "round-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "type": "null"
        +                      },
        +                      "turn": {
        +                        "const": "either",
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  }
        +                ]
        +              },
        +              "maxItems": 10,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "unit": {
        +              "properties": {
        +                "index": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "whileDestroyed": {
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "ability",
        +            "description",
        +            "timings"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 100,
        +        "type": "array"
        +      },
        +      "remindersEnabled": {
        +        "default": true,
        +        "type": "boolean"
        +      },
        +      "secondaries": {
        +        "items": {
        +          "properties": {
        +            "key": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "name": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 6,
        +        "type": "array"
        +      },
        +      "shareNotes": {
        +        "default": false,
        +        "type": "boolean"
        +      },
        +      "stratagems": {
        +        "items": {
        +          "properties": {
        +            "cp": {
        +              "maximum": 6,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "key": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "limit": {
        +              "enum": [
        +                "phase",
        +                "turn",
        +                "battle-round",
        +                "battle",
        +                "unlimited"
        +              ],
        +              "type": "string"
        +            },
        +            "name": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "phases": {
        +              "items": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "maxItems": 6,
        +              "type": "array"
        +            },
        +            "turn": {
        +              "enum": [
        +                "your-turn",
        +                "opponent-turn",
        +                "either"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "name",
        +            "cp",
        +            "limit"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 48,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stratagems",
        +      "secondaries"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "allEligible": {
        -                    "type": "boolean"
        -                  },
        -                  "areas": {
        -                    "items": {
        -                      "properties": {
        -                        "key": {
        -                          "maxLength": 128,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 5,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "locate-and-deny",
        -                    "type": "string"
        -                  },
        -                  "outsideZone": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "areas",
        -                  "outsideZone",
        -                  "allEligible"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "controlled": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "sensor-sweep",
        -                    "type": "string"
        -                  },
        -                  "marker": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "playerId": {
        -                        "maxLength": 64,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name",
        -                      "playerId"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "marker",
        -                  "controlled"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "consecrations": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "consecrate",
        -                    "type": "string"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "consecrations",
        -                  "qualified",
        -                  "notHome"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon",
        -                              "locate-and-deny",
        -                              "sensor-sweep",
        -                              "consecrate"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon",
        -                            "locate-and-deny",
        -                            "sensor-sweep",
        -                            "consecrate"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon",
        -                      "locate-and-deny",
        -                      "sensor-sweep",
        -                      "consecrate"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon",
        -                    "locate-and-deny",
        -                    "sensor-sweep",
        -                    "consecrate"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon",
        -                  "locate-and-deny",
        -                  "sensor-sweep",
        -                  "consecrate"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "nickname": {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "nickname": {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        "note": {
        +                          "maxLength": 500,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  10. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "cardKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "select-mission",
        -            "type": "string"
        -          },
        -          "occurrence": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "selection": {
        -            "oneOf": [
        -              {
        -                "properties": {
        -                  "fallback": {
        -                    "type": "boolean"
        -                  },
        -                  "kind": {
        -                    "const": "punishment",
        -                    "type": "string"
        -                  },
        -                  "qualified": {
        -                    "type": "boolean"
        -                  },
        -                  "unavailable": {
        -                    "const": true,
        -                    "type": "boolean"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "playerId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "rosterSeq": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        "unitKey": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "playerId",
        -                        "unitKey",
        -                        "rosterSeq"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "units",
        -                  "fallback",
        -                  "qualified"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "guards": {
        -                    "items": {
        -                      "properties": {
        -                        "objective": {
        -                          "properties": {
        -                            "key": {
        -                              "maxLength": 128,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "name": {
        -                              "maxLength": 80,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "key",
        -                            "name"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "unit": {
        -                          "properties": {
        -                            "playerId": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "rosterSeq": {
        -                              "exclusiveMinimum": 0,
        -                              "maximum": 9007199254740991,
        -                              "type": "integer"
        -                            },
        -                            "unitKey": {
        -                              "maxLength": 64,
        -                              "minLength": 1,
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "playerId",
        -                            "unitKey",
        -                            "rosterSeq"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "objective",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "kind": {
        -                    "const": "guards",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "guards"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "tempting-target",
        -                    "type": "string"
        -                  },
        -                  "noMansLand": {
        -                    "type": "boolean"
        -                  },
        -                  "notHome": {
        -                    "type": "boolean"
        -                  },
        -                  "objective": {
        -                    "properties": {
        -                      "key": {
        -                        "maxLength": 128,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "key",
        -                      "name"
        -                    ],
        -                    "type": "object"
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "objective",
        -                  "notHome",
        -                  "noMansLand"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "properties": {
        -                  "kind": {
        -                    "const": "beacon",
        -                    "type": "string"
        -                  },
        -                  "note": {
        -                    "maxLength": 200,
        -                    "type": "string"
        -                  },
        -                  "unit": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "playerId": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "rosterSeq": {
        -                            "exclusiveMinimum": 0,
        -                            "maximum": 9007199254740991,
        -                            "type": "integer"
        -                          },
        -                          "unitKey": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "playerId",
        -                          "unitKey",
        -                          "rosterSeq"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "kind",
        -                  "unit",
        -                  "note"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "cardKey",
        -          "occurrence",
        -          "selection"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "selection": {
        -                            "enum": [
        -                              "punishment",
        -                              "guards",
        -                              "tempting-target",
        -                              "beacon"
        -                            ],
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "selection": {
        -                          "enum": [
        -                            "punishment",
        -                            "guards",
        -                            "tempting-target",
        -                            "beacon"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "selection": {
        -                    "enum": [
        -                      "punishment",
        -                      "guards",
        -                      "tempting-target",
        -                      "beacon"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "selection": {
        -                  "enum": [
        -                    "punishment",
        -                    "guards",
        -                    "tempting-target",
        -                    "beacon"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "selection": {
        -                "enum": [
        -                  "punishment",
        -                  "guards",
        -                  "tempting-target",
        -                  "beacon"
        -                ],
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "allEligible": {
        +                    "type": "boolean"
        +                  },
        +                  "areas": {
        +                    "items": {
        +                      "properties": {
        +                        "key": {
        +                          "maxLength": 128,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 5,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "locate-and-deny",
        +                    "type": "string"
        +                  },
        +                  "outsideZone": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "areas",
        +                  "outsideZone",
        +                  "allEligible"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "controlled": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "sensor-sweep",
        +                    "type": "string"
        +                  },
        +                  "marker": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "playerId": {
        +                        "maxLength": 64,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name",
        +                      "playerId"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "marker",
        +                  "controlled"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "consecrations": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "consecrate",
        +                    "type": "string"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "consecrations",
        +                  "qualified",
        +                  "notHome"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon",
        +                              "locate-and-deny",
        +                              "sensor-sweep",
        +                              "consecrate"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon",
        +                            "locate-and-deny",
        +                            "sensor-sweep",
        +                            "consecrate"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon",
        +                      "locate-and-deny",
        +                      "sensor-sweep",
        +                      "consecrate"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon",
        +                    "locate-and-deny",
        +                    "sensor-sweep",
        +                    "consecrate"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon",
        +                  "locate-and-deny",
        +                  "sensor-sweep",
        +                  "consecrate"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  11. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "final": {
        -                      "properties": {
        -                        "claims": {
        -                          "items": {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "delta": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 9007199254740991,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "claims",
        -                        "delta"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "cardKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "select-mission",
        +            "type": "string"
        +          },
        +          "occurrence": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "selection": {
        +            "oneOf": [
        +              {
        +                "properties": {
        +                  "fallback": {
        +                    "type": "boolean"
        +                  },
        +                  "kind": {
        +                    "const": "punishment",
        +                    "type": "string"
        +                  },
        +                  "qualified": {
        +                    "type": "boolean"
        +                  },
        +                  "unavailable": {
        +                    "const": true,
        +                    "type": "boolean"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "playerId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "rosterSeq": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        },
        +                        "unitKey": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "playerId",
        +                        "unitKey",
        +                        "rosterSeq"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "units",
        +                  "fallback",
        +                  "qualified"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "guards": {
        +                    "items": {
        +                      "properties": {
        +                        "objective": {
        +                          "properties": {
        +                            "key": {
        +                              "maxLength": 128,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "name": {
        +                              "maxLength": 80,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "key",
        +                            "name"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "unit": {
        +                          "properties": {
        +                            "playerId": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "rosterSeq": {
        +                              "exclusiveMinimum": 0,
        +                              "maximum": 9007199254740991,
        +                              "type": "integer"
        +                            },
        +                            "unitKey": {
        +                              "maxLength": 64,
        +                              "minLength": 1,
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "playerId",
        +                            "unitKey",
        +                            "rosterSeq"
        +                          ],
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "objective",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "kind": {
        +                    "const": "guards",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "guards"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "tempting-target",
        +                    "type": "string"
        +                  },
        +                  "noMansLand": {
        +                    "type": "boolean"
        +                  },
        +                  "notHome": {
        +                    "type": "boolean"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective",
        +                  "notHome",
        +                  "noMansLand"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "properties": {
        +                  "kind": {
        +                    "const": "beacon",
        +                    "type": "string"
        +                  },
        +                  "note": {
        +                    "maxLength": 200,
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "playerId": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "rosterSeq": {
        +                            "exclusiveMinimum": 0,
        +                            "maximum": 9007199254740991,
        +                            "type": "integer"
        +                          },
        +                          "unitKey": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "playerId",
        +                          "unitKey",
        +                          "rosterSeq"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "unit",
        +                  "note"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "cardKey",
        +          "occurrence",
        +          "selection"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "selection": {
        +                            "enum": [
        +                              "punishment",
        +                              "guards",
        +                              "tempting-target",
        +                              "beacon"
        +                            ],
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "selection": {
        +                          "enum": [
        +                            "punishment",
        +                            "guards",
        +                            "tempting-target",
        +                            "beacon"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "selection": {
        +                    "enum": [
        +                      "punishment",
        +                      "guards",
        +                      "tempting-target",
        +                      "beacon"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "selection": {
        +                  "enum": [
        +                    "punishment",
        +                    "guards",
        +                    "tempting-target",
        +                    "beacon"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "selection": {
        +                "enum": [
        +                  "punishment",
        +                  "guards",
        +                  "tempting-target",
        +                  "beacon"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  12. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "description": {
        -                        "maxLength": 240,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "slug": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "final": {
        +                      "properties": {
        +                        "claims": {
        +                          "items": {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "delta": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 9007199254740991,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "claims",
        +                        "delta"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  13. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "edition": {
        -                    "properties": {
        -                      "id": {
        -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "maxLength": 80,
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "status": {
        -                        "enum": [
        -                          "preview",
        -                          "released",
        -                          "retired"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "id",
        -                      "name",
        -                      "status"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "description": {
        +                        "maxLength": 240,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "slug": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  14. 1 tool update
    • Changedsave_roster1 field changed
      • addedInput schema / properties / borrowedDetachmentId / default
        Added value: +null
  15. 1 tool update
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "edition": {
        +                    "properties": {
        +                      "id": {
        +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "status": {
        +                        "enum": [
        +                          "preview",
        +                          "released",
        +                          "retired"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "status"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  16. 2 tool updates
    • Changedsave_roster1 field changed
      • removedInput schema / properties / borrowedDetachmentId / default
        Removed value: -null
    • Addedsimulate_combat
  17. 2 tool updates
    • Changedcreate_battle4 fields changed
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": -9007199254740991,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / limit / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / limit / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "maximum": 10000,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight",
        -                                  "any"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "firstRoundOnly": {
        -                                "type": "boolean"
        -                              },
        -                              "moment": {
        -                                "enum": [
        -                                  "round-start",
        -                                  "round-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "const": "either",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "whileDestroyed": {
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  18. 2 tool updates
    • Changedsave_roster1 field changed
      • changedInput schema / properties / prep / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "reminders": {
        -        "default": [],
        -        "items": {
        -          "properties": {
        -            "ability": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "description": {
        -              "maxLength": 10000,
        -              "type": "string"
        -            },
        -            "key": {
        -              "maxLength": 240,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "timings": {
        -              "items": {
        -                "oneOf": [
        -                  {
        -                    "properties": {
        -                      "moment": {
        -                        "enum": [
        -                          "phase-start",
        -                          "phase-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "enum": [
        -                          "command",
        -                          "movement",
        -                          "shooting",
        -                          "charge",
        -                          "fight"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "turn": {
        -                        "enum": [
        -                          "your-turn",
        -                          "opponent-turn",
        -                          "either"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "properties": {
        -                      "moment": {
        -                        "enum": [
        -                          "turn-start",
        -                          "turn-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "type": "null"
        -                      },
        -                      "turn": {
        -                        "enum": [
        -                          "your-turn",
        -                          "opponent-turn",
        -                          "either"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  }
        -                ]
        -              },
        -              "maxItems": 10,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "unit": {
        -              "properties": {
        -                "index": {
        -                  "maximum": 99,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "name"
        -              ],
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "ability",
        -            "description",
        -            "timings"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 100,
        -        "type": "array"
        -      },
        -      "remindersEnabled": {
        -        "default": true,
        -        "type": "boolean"
        -      },
        -      "secondaries": {
        -        "items": {
        -          "properties": {
        -            "key": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "name": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "name"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 6,
        -        "type": "array"
        -      },
        -      "stratagems": {
        -        "items": {
        -          "properties": {
        -            "cp": {
        -              "maximum": 6,
        -              "minimum": 0,
        -              "type": "integer"
        -            },
        -            "key": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "limit": {
        -              "enum": [
        -                "phase",
        -                "turn",
        -                "battle-round",
        -                "battle",
        -                "unlimited"
        -              ],
        -              "type": "string"
        -            },
        -            "name": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "phases": {
        -              "items": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "maxItems": 6,
        -              "type": "array"
        -            },
        -            "turn": {
        -              "enum": [
        -                "your-turn",
        -                "opponent-turn",
        -                "either"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "name",
        -            "cp",
        -            "limit"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 48,
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "stratagems",
        -      "secondaries"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "reminders": {
        +        "default": [],
        +        "items": {
        +          "properties": {
        +            "ability": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "description": {
        +              "maxLength": 10000,
        +              "type": "string"
        +            },
        +            "key": {
        +              "maxLength": 240,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "timings": {
        +              "items": {
        +                "oneOf": [
        +                  {
        +                    "properties": {
        +                      "firstRoundOnly": {
        +                        "type": "boolean"
        +                      },
        +                      "moment": {
        +                        "enum": [
        +                          "phase-start",
        +                          "phase-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "enum": [
        +                          "command",
        +                          "movement",
        +                          "shooting",
        +                          "charge",
        +                          "fight",
        +                          "any"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "turn": {
        +                        "enum": [
        +                          "your-turn",
        +                          "opponent-turn",
        +                          "either"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "properties": {
        +                      "firstRoundOnly": {
        +                        "type": "boolean"
        +                      },
        +                      "moment": {
        +                        "enum": [
        +                          "turn-start",
        +                          "turn-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "type": "null"
        +                      },
        +                      "turn": {
        +                        "enum": [
        +                          "your-turn",
        +                          "opponent-turn",
        +                          "either"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "properties": {
        +                      "firstRoundOnly": {
        +                        "type": "boolean"
        +                      },
        +                      "moment": {
        +                        "enum": [
        +                          "round-start",
        +                          "round-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "type": "null"
        +                      },
        +                      "turn": {
        +                        "const": "either",
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  }
        +                ]
        +              },
        +              "maxItems": 10,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "unit": {
        +              "properties": {
        +                "index": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "whileDestroyed": {
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "ability",
        +            "description",
        +            "timings"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 100,
        +        "type": "array"
        +      },
        +      "remindersEnabled": {
        +        "default": true,
        +        "type": "boolean"
        +      },
        +      "secondaries": {
        +        "items": {
        +          "properties": {
        +            "key": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "name": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 6,
        +        "type": "array"
        +      },
        +      "stratagems": {
        +        "items": {
        +          "properties": {
        +            "cp": {
        +              "maximum": 6,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "key": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "limit": {
        +              "enum": [
        +                "phase",
        +                "turn",
        +                "battle-round",
        +                "battle",
        +                "unlimited"
        +              ],
        +              "type": "string"
        +            },
        +            "name": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "phases": {
        +              "items": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "maxItems": 6,
        +              "type": "array"
        +            },
        +            "turn": {
        +              "enum": [
        +                "your-turn",
        +                "opponent-turn",
        +                "either"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "name",
        +            "cp",
        +            "limit"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 48,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stratagems",
        +      "secondaries"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "maximum": 10000,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle-round",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle-round",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "maximum": 10000,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight",
        +                                  "any"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "firstRoundOnly": {
        +                                "type": "boolean"
        +                              },
        +                              "moment": {
        +                                "enum": [
        +                                  "round-start",
        +                                  "round-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "const": "either",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "whileDestroyed": {
        +                      "type": "boolean"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  19. 2 tool updates
    • Changedsave_roster1 field changed
      • changedInput schema / properties / prep / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "reminders": {
        -        "default": [],
        -        "items": {
        -          "properties": {
        -            "ability": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "description": {
        -              "maxLength": 10000,
        -              "type": "string"
        -            },
        -            "key": {
        -              "maxLength": 240,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "timings": {
        -              "items": {
        -                "oneOf": [
        -                  {
        -                    "properties": {
        -                      "moment": {
        -                        "enum": [
        -                          "phase-start",
        -                          "phase-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "enum": [
        -                          "command",
        -                          "movement",
        -                          "shooting",
        -                          "charge",
        -                          "fight"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "turn": {
        -                        "enum": [
        -                          "your-turn",
        -                          "opponent-turn",
        -                          "either"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "properties": {
        -                      "moment": {
        -                        "enum": [
        -                          "turn-start",
        -                          "turn-end"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "phase": {
        -                        "type": "null"
        -                      },
        -                      "turn": {
        -                        "enum": [
        -                          "your-turn",
        -                          "opponent-turn",
        -                          "either"
        -                        ],
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "moment",
        -                      "phase",
        -                      "turn"
        -                    ],
        -                    "type": "object"
        -                  }
        -                ]
        -              },
        -              "maxItems": 10,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "unit": {
        -              "properties": {
        -                "index": {
        -                  "maximum": 99,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "name"
        -              ],
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "ability",
        -            "description",
        -            "timings"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 100,
        -        "type": "array"
        -      },
        -      "remindersEnabled": {
        -        "default": true,
        -        "type": "boolean"
        -      },
        -      "secondaries": {
        -        "items": {
        -          "properties": {
        -            "key": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "name": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "name"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 6,
        -        "type": "array"
        -      },
        -      "stratagems": {
        -        "items": {
        -          "properties": {
        -            "cp": {
        -              "maximum": 6,
        -              "minimum": 0,
        -              "type": "integer"
        -            },
        -            "key": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "limit": {
        -              "enum": [
        -                "phase",
        -                "turn",
        -                "battle",
        -                "unlimited"
        -              ],
        -              "type": "string"
        -            },
        -            "name": {
        -              "maxLength": 80,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "phases": {
        -              "items": {
        -                "enum": [
        -                  "command",
        -                  "movement",
        -                  "shooting",
        -                  "charge",
        -                  "fight",
        -                  "end"
        -                ],
        -                "type": "string"
        -              },
        -              "maxItems": 6,
        -              "type": "array"
        -            },
        -            "turn": {
        -              "enum": [
        -                "your-turn",
        -                "opponent-turn",
        -                "either"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "name",
        -            "cp",
        -            "limit"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 48,
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "stratagems",
        -      "secondaries"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "reminders": {
        +        "default": [],
        +        "items": {
        +          "properties": {
        +            "ability": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "description": {
        +              "maxLength": 10000,
        +              "type": "string"
        +            },
        +            "key": {
        +              "maxLength": 240,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "timings": {
        +              "items": {
        +                "oneOf": [
        +                  {
        +                    "properties": {
        +                      "moment": {
        +                        "enum": [
        +                          "phase-start",
        +                          "phase-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "enum": [
        +                          "command",
        +                          "movement",
        +                          "shooting",
        +                          "charge",
        +                          "fight"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "turn": {
        +                        "enum": [
        +                          "your-turn",
        +                          "opponent-turn",
        +                          "either"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "properties": {
        +                      "moment": {
        +                        "enum": [
        +                          "turn-start",
        +                          "turn-end"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "phase": {
        +                        "type": "null"
        +                      },
        +                      "turn": {
        +                        "enum": [
        +                          "your-turn",
        +                          "opponent-turn",
        +                          "either"
        +                        ],
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "moment",
        +                      "phase",
        +                      "turn"
        +                    ],
        +                    "type": "object"
        +                  }
        +                ]
        +              },
        +              "maxItems": 10,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "unit": {
        +              "properties": {
        +                "index": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "name"
        +              ],
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "ability",
        +            "description",
        +            "timings"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 100,
        +        "type": "array"
        +      },
        +      "remindersEnabled": {
        +        "default": true,
        +        "type": "boolean"
        +      },
        +      "secondaries": {
        +        "items": {
        +          "properties": {
        +            "key": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "name": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 6,
        +        "type": "array"
        +      },
        +      "stratagems": {
        +        "items": {
        +          "properties": {
        +            "cp": {
        +              "maximum": 6,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "key": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "limit": {
        +              "enum": [
        +                "phase",
        +                "turn",
        +                "battle-round",
        +                "battle",
        +                "unlimited"
        +              ],
        +              "type": "string"
        +            },
        +            "name": {
        +              "maxLength": 80,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "phases": {
        +              "items": {
        +                "enum": [
        +                  "command",
        +                  "movement",
        +                  "shooting",
        +                  "charge",
        +                  "fight",
        +                  "end"
        +                ],
        +                "type": "string"
        +              },
        +              "maxItems": 6,
        +              "type": "array"
        +            },
        +            "turn": {
        +              "enum": [
        +                "your-turn",
        +                "opponent-turn",
        +                "either"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "name",
        +            "cp",
        +            "limit"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 48,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stratagems",
        +      "secondaries"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "maximum": 10000,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 128,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "maximum": 10000,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle-round",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle-round",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]
  20. 2 tool updates
    • Changedsave_roster2 fields changed
      • changedInput schema / properties / borrowedDetachmentId / anyOf
        Previous value: -[
        -  {
        -    "maxLength": 64,
        -    "minLength": 1,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 128,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / detachmentIds / items / maxLength
        Previous value: -64New value: +128
    • Changedsubmit_battle_action1 field changed
      • changedInput schema / properties / command / anyOf
        Previous value: -[
        -  {
        -    "oneOf": [
        -      {
        -        "properties": {
        -          "clockLimitMinutes": {
        -            "anyOf": [
        -              {
        -                "maximum": 300,
        -                "minimum": 5,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "configure-battle",
        -            "type": "string"
        -          },
        -          "limit": {
        -            "maximum": 10000,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "missionPackId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "playerCount": {
        -            "anyOf": [
        -              {
        -                "const": 2,
        -                "type": "number"
        -              },
        -              {
        -                "const": 3,
        -                "type": "number"
        -              },
        -              {
        -                "const": 4,
        -                "type": "number"
        -              }
        -            ]
        -          },
        -          "teamBattle": {
        -            "type": "boolean"
        -          },
        -          "terrainLayoutId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "twistId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "limit",
        -          "missionPackId",
        -          "terrainLayoutId",
        -          "twistId",
        -          "clockLimitMinutes"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reset-setup",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "detach-roster",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "eventToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "lock-league-rosters",
        -            "type": "string"
        -          },
        -          "leagueToken": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "leagueToken"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-setup-step",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-attacker",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "attackerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-first-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "disposition": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-side-disposition",
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "disposition"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "attach-roster",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "primary": {
        -                    "anyOf": [
        -                      {
        -                        "properties": {
        -                          "awards": {
        -                            "items": {
        -                              "properties": {
        -                                "criteria": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 2000,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "cumulative": {
        -                                  "type": "boolean"
        -                                },
        -                                "group": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 100,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "max": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maximum": 100,
        -                                      "minimum": 0,
        -                                      "type": "integer"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "mode": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 40,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "per": {
        -                                  "anyOf": [
        -                                    {
        -                                      "maxLength": 200,
        -                                      "type": "string"
        -                                    },
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "trigger": {
        -                                  "properties": {
        -                                    "phase": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "playerTurn": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMax": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "roundMin": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maximum": 5,
        -                                          "minimum": 1,
        -                                          "type": "integer"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    },
        -                                    "timing": {
        -                                      "anyOf": [
        -                                        {
        -                                          "maxLength": 80,
        -                                          "type": "string"
        -                                        },
        -                                        {
        -                                          "type": "null"
        -                                        }
        -                                      ]
        -                                    }
        -                                  },
        -                                  "required": [
        -                                    "timing",
        -                                    "phase",
        -                                    "playerTurn",
        -                                    "roundMin",
        -                                    "roundMax"
        -                                  ],
        -                                  "type": "object"
        -                                },
        -                                "vp": {
        -                                  "maximum": 100,
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                }
        -                              },
        -                              "required": [
        -                                "vp",
        -                                "per",
        -                                "mode",
        -                                "max",
        -                                "group",
        -                                "cumulative",
        -                                "criteria",
        -                                "trigger"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            "maxItems": 20,
        -                            "type": "array"
        -                          },
        -                          "key": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "name": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "key",
        -                          "name"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "secondaries": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 6,
        -                    "type": "array"
        -                  },
        -                  "secondaryDeck": {
        -                    "items": {
        -                      "properties": {
        -                        "awards": {
        -                          "items": {
        -                            "properties": {
        -                              "criteria": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 2000,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "cumulative": {
        -                                "type": "boolean"
        -                              },
        -                              "group": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 100,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "max": {
        -                                "anyOf": [
        -                                  {
        -                                    "maximum": 100,
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "mode": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 40,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "per": {
        -                                "anyOf": [
        -                                  {
        -                                    "maxLength": 200,
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ]
        -                              },
        -                              "trigger": {
        -                                "properties": {
        -                                  "phase": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "playerTurn": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMax": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "roundMin": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maximum": 5,
        -                                        "minimum": 1,
        -                                        "type": "integer"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "timing": {
        -                                    "anyOf": [
        -                                      {
        -                                        "maxLength": 80,
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "required": [
        -                                  "timing",
        -                                  "phase",
        -                                  "playerTurn",
        -                                  "roundMin",
        -                                  "roundMax"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "vp": {
        -                                "maximum": 100,
        -                                "minimum": 0,
        -                                "type": "integer"
        -                              }
        -                            },
        -                            "required": [
        -                              "vp",
        -                              "per",
        -                              "mode",
        -                              "max",
        -                              "group",
        -                              "cumulative",
        -                              "criteria",
        -                              "trigger"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 60,
        -                    "type": "array"
        -                  },
        -                  "secondaryMode": {
        -                    "enum": [
        -                      "fixed",
        -                      "tactical"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "stratagems": {
        -                    "items": {
        -                      "properties": {
        -                        "cp": {
        -                          "maximum": 6,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "detachment": {
        -                          "maxLength": 249,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "limit": {
        -                          "enum": [
        -                            "phase",
        -                            "turn",
        -                            "battle",
        -                            "unlimited"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "phases": {
        -                          "items": {
        -                            "enum": [
        -                              "command",
        -                              "movement",
        -                              "shooting",
        -                              "charge",
        -                              "fight",
        -                              "end"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 6,
        -                          "type": "array"
        -                        },
        -                        "turn": {
        -                          "enum": [
        -                            "your-turn",
        -                            "opponent-turn",
        -                            "either"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "cp",
        -                        "limit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 48,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "stratagems",
        -                  "secondaries",
        -                  "primary",
        -                  "secondaryMode"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "roster": {
        -            "properties": {
        -              "built": {
        -                "properties": {
        -                  "catalogueId": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "detachment": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 80,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachmentIds": {
        -                    "items": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "detachmentPointBudget": {
        -                    "anyOf": [
        -                      {
        -                        "maximum": 3,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "detachments": {
        -                    "items": {
        -                      "properties": {
        -                        "name": {
        -                          "maxLength": 80,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 3,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "name",
        -                        "points"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 3,
        -                    "type": "array"
        -                  },
        -                  "disposition": {
        -                    "anyOf": [
        -                      {
        -                        "maxLength": 64,
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "limit": {
        -                    "maximum": 10000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "picks": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "catalogueId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "choices": {
        -                          "additionalProperties": {
        -                            "maxLength": 64,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 60,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        "spreads": {
        -                          "additionalProperties": {
        -                            "additionalProperties": {
        -                              "maximum": 60,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "propertyNames": {
        -                              "maxLength": 64,
        -                              "type": "string"
        -                            },
        -                            "type": "object"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "toggles": {
        -                          "additionalProperties": {
        -                            "maximum": 1,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          "propertyNames": {
        -                            "maxLength": 400,
        -                            "type": "string"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "required": [
        -                        "entryId"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 100,
        -                    "type": "array"
        -                  },
        -                  "revision": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "strategicReserveLimit": {
        -                    "maximum": 5000,
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  "units": {
        -                    "items": {
        -                      "properties": {
        -                        "attachedTo": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "enhancements": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "entryId": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formationOptions": {
        -                          "items": {
        -                            "enum": [
        -                              "battlefield",
        -                              "strategic-reserves",
        -                              "deep-strike",
        -                              "embarked"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 4,
        -                          "type": "array"
        -                        },
        -                        "group": {
        -                          "enum": [
        -                            "epic-hero",
        -                            "character",
        -                            "battleline",
        -                            "infantry",
        -                            "swarm",
        -                            "mounted",
        -                            "beast",
        -                            "monster",
        -                            "vehicle",
        -                            "drone",
        -                            "transport",
        -                            "fortification",
        -                            "other"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "joined": {
        -                          "items": {
        -                            "properties": {
        -                              "label": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "label",
        -                              "name"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "key": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "models": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "points": {
        -                          "maximum": 10000,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "prebattleRules": {
        -                          "items": {
        -                            "enum": [
        -                              "infiltrators",
        -                              "scouts"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "maxItems": 2,
        -                          "type": "array"
        -                        },
        -                        "strategicReserveExempt": {
        -                          "type": "boolean"
        -                        },
        -                        "transport": {
        -                          "type": "boolean"
        -                        },
        -                        "transportRule": {
        -                          "maxLength": 4000,
        -                          "type": "string"
        -                        },
        -                        "upgrades": {
        -                          "items": {
        -                            "maxLength": 80,
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "wargear": {
        -                          "items": {
        -                            "properties": {
        -                              "count": {
        -                                "maximum": 100,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              "name": {
        -                                "maxLength": 80,
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "name",
        -                              "count"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "maxItems": 200,
        -                          "type": "array"
        -                        },
        -                        "warlord": {
        -                          "type": "boolean"
        -                        },
        -                        "warlordEligible": {
        -                          "type": "boolean"
        -                        },
        -                        "wounds": {
        -                          "maximum": 100,
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "key",
        -                        "name",
        -                        "points",
        -                        "models"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 200,
        -                    "type": "array"
        -                  },
        -                  "waivedRules": {
        -                    "items": {
        -                      "enum": [
        -                        "points-limit",
        -                        "detachments",
        -                        "detachment-points",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 8,
        -                    "type": "array"
        -                  }
        -                },
        -                "required": [
        -                  "catalogueId",
        -                  "revision",
        -                  "limit",
        -                  "detachment",
        -                  "disposition",
        -                  "units"
        -                ],
        -                "type": "object"
        -              },
        -              "id": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "type": "string"
        -              },
        -              "reminders": {
        -                "items": {
        -                  "properties": {
        -                    "ability": {
        -                      "maxLength": 80,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "description": {
        -                      "maxLength": 10000,
        -                      "type": "string"
        -                    },
        -                    "key": {
        -                      "maxLength": 240,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "timings": {
        -                      "items": {
        -                        "oneOf": [
        -                          {
        -                            "properties": {
        -                              "moment": {
        -                                "enum": [
        -                                  "phase-start",
        -                                  "phase-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "enum": [
        -                                  "command",
        -                                  "movement",
        -                                  "shooting",
        -                                  "charge",
        -                                  "fight"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          {
        -                            "properties": {
        -                              "moment": {
        -                                "enum": [
        -                                  "turn-start",
        -                                  "turn-end"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "phase": {
        -                                "type": "null"
        -                              },
        -                              "turn": {
        -                                "enum": [
        -                                  "your-turn",
        -                                  "opponent-turn",
        -                                  "either"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "moment",
        -                              "phase",
        -                              "turn"
        -                            ],
        -                            "type": "object"
        -                          }
        -                        ]
        -                      },
        -                      "maxItems": 10,
        -                      "minItems": 1,
        -                      "type": "array"
        -                    },
        -                    "unit": {
        -                      "properties": {
        -                        "index": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "name": {
        -                          "maxLength": 80,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "index",
        -                        "name"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "key",
        -                    "ability",
        -                    "description",
        -                    "timings"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 100,
        -                "type": "array"
        -              },
        -              "remindersEnabled": {
        -                "type": "boolean"
        -              },
        -              "text": {
        -                "maxLength": 20000,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "name",
        -              "text"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "roster"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "destroyed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "destroyed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-prep",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "primary": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "awards": {
        -                    "items": {
        -                      "properties": {
        -                        "criteria": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 2000,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "cumulative": {
        -                          "type": "boolean"
        -                        },
        -                        "group": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 100,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "max": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 100,
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "mode": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 40,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "per": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 200,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "trigger": {
        -                          "properties": {
        -                            "phase": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "playerTurn": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMax": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "roundMin": {
        -                              "anyOf": [
        -                                {
        -                                  "maximum": 5,
        -                                  "minimum": 1,
        -                                  "type": "integer"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "timing": {
        -                              "anyOf": [
        -                                {
        -                                  "maxLength": 80,
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "required": [
        -                            "timing",
        -                            "phase",
        -                            "playerTurn",
        -                            "roundMin",
        -                            "roundMax"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "vp": {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "required": [
        -                        "vp",
        -                        "per",
        -                        "mode",
        -                        "max",
        -                        "group",
        -                        "cumulative",
        -                        "criteria",
        -                        "trigger"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "maxItems": 20,
        -                    "type": "array"
        -                  },
        -                  "key": {
        -                    "maxLength": 64,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "maxLength": 80,
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "key",
        -                  "name"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "type": "array"
        -          },
        -          "secondaryDeck": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 60,
        -            "type": "array"
        -          },
        -          "secondaryMode": {
        -            "enum": [
        -              "fixed",
        -              "tactical"
        -            ],
        -            "type": "string"
        -          },
        -          "stratagems": {
        -            "items": {
        -              "properties": {
        -                "cp": {
        -                  "maximum": 6,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "detachment": {
        -                  "maxLength": 249,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "limit": {
        -                  "enum": [
        -                    "phase",
        -                    "turn",
        -                    "battle",
        -                    "unlimited"
        -                  ],
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "phases": {
        -                  "items": {
        -                    "enum": [
        -                      "command",
        -                      "movement",
        -                      "shooting",
        -                      "charge",
        -                      "fight",
        -                      "end"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "maxItems": 6,
        -                  "type": "array"
        -                },
        -                "turn": {
        -                  "enum": [
        -                    "your-turn",
        -                    "opponent-turn",
        -                    "either"
        -                  ],
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name",
        -                "cp",
        -                "limit"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 48,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagems",
        -          "secondaries",
        -          "primary",
        -          "secondaryMode"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "deployed": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "deploy-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "deployed"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "formation": {
        -            "enum": [
        -              "battlefield",
        -              "strategic-reserves",
        -              "deep-strike",
        -              "embarked"
        -            ],
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-unit-formation",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "transportKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "formation"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-painted",
        -            "type": "string"
        -          },
        -          "painted": {
        -            "type": "boolean"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "painted"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "wound-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "damage-unit",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "unitKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "unitKey",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-deployment",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "set-battlefield",
        -            "type": "string"
        -          },
        -          "patternId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "terrainLayoutId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "patternId",
        -          "terrainLayoutId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "use-stratagem",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "cp": {
        -            "maximum": 6,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "use-new-orders",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          },
        -          "secondaryKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "stratagemKey": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "stratagemKey",
        -          "secondaryKey",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "score-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "score-settlement",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "round": {
        -            "maximum": 5,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "scores": {
        -            "items": {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "primary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "properties": {
        -                    "category": {
        -                      "const": "secondary",
        -                      "type": "string"
        -                    },
        -                    "delta": {
        -                      "exclusiveMinimum": 0,
        -                      "maximum": 9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "key": {
        -                      "maxLength": 64,
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "const": "achieved",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "key",
        -                    "delta"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "maxItems": 31,
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "scores"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "key": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "set-secondary-status",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "active",
        -              "achieved",
        -              "discarded",
        -              "returned"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "key",
        -          "status"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondary",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "draw-secondaries",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondaries": {
        -            "items": {
        -              "properties": {
        -                "awards": {
        -                  "items": {
        -                    "properties": {
        -                      "criteria": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 2000,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "cumulative": {
        -                        "type": "boolean"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 100,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "max": {
        -                        "anyOf": [
        -                          {
        -                            "maximum": 100,
        -                            "minimum": 0,
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "mode": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 40,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "per": {
        -                        "anyOf": [
        -                          {
        -                            "maxLength": 200,
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ]
        -                      },
        -                      "trigger": {
        -                        "properties": {
        -                          "phase": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "playerTurn": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMax": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "roundMin": {
        -                            "anyOf": [
        -                              {
        -                                "maximum": 5,
        -                                "minimum": 1,
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "timing": {
        -                            "anyOf": [
        -                              {
        -                                "maxLength": 80,
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "required": [
        -                          "timing",
        -                          "phase",
        -                          "playerTurn",
        -                          "roundMin",
        -                          "roundMax"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "vp": {
        -                        "maximum": 100,
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      }
        -                    },
        -                    "required": [
        -                      "vp",
        -                      "per",
        -                      "mode",
        -                      "max",
        -                      "group",
        -                      "cumulative",
        -                      "criteria",
        -                      "trigger"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "maxItems": 20,
        -                  "type": "array"
        -                },
        -                "key": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "maxLength": 80,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "key",
        -                "name"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "selected": {
        -            "const": true,
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondaries"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-draw",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "acknowledge-scoring",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "select-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "secondary": {
        -            "properties": {
        -              "awards": {
        -                "items": {
        -                  "properties": {
        -                    "criteria": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 2000,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "cumulative": {
        -                      "type": "boolean"
        -                    },
        -                    "group": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "max": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 100,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "mode": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 40,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "per": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 200,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "trigger": {
        -                      "properties": {
        -                        "phase": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "playerTurn": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMax": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "roundMin": {
        -                          "anyOf": [
        -                            {
        -                              "maximum": 5,
        -                              "minimum": 1,
        -                              "type": "integer"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        },
        -                        "timing": {
        -                          "anyOf": [
        -                            {
        -                              "maxLength": 80,
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "timing",
        -                        "phase",
        -                        "playerTurn",
        -                        "roundMin",
        -                        "roundMax"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "vp": {
        -                      "maximum": 100,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "vp",
        -                    "per",
        -                    "mode",
        -                    "max",
        -                    "group",
        -                    "cumulative",
        -                    "criteria",
        -                    "trigger"
        -                  ],
        -                  "type": "object"
        -                },
        -                "maxItems": 20,
        -                "type": "array"
        -              },
        -              "key": {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "name": {
        -                "maxLength": 80,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "key",
        -              "name"
        -            ],
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "secondary"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reveal-secret",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "attackerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "firstPlayerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "begin-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "firstPlayerId"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "adjust-cp",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "gainCp": {
        -            "type": "boolean"
        -          },
        -          "keys": {
        -            "items": {
        -              "maxLength": 64,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "kind": {
        -            "const": "resolve-tactical-hand",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "category": {
        -            "enum": [
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          },
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "score",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "category",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "delta": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "kind": {
        -            "const": "correct-player",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resource": {
        -            "enum": [
        -              "cp",
        -              "primary",
        -              "secondary"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "playerId",
        -          "resource",
        -          "delta"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "settle-opponent-turn",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "request-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "cancel-advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "advance",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "pause-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "resume-clock",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "concededBy": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "kind": {
        -            "const": "end-battle",
        -            "type": "string"
        -          },
        -          "reason": {
        -            "enum": [
        -              "completed",
        -              "finished-early",
        -              "conceded"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "reopen-battle",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "properties": {
        -          "kind": {
        -            "const": "undo",
        -            "type": "string"
        -          },
        -          "target": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "target"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "kind": {
        -        "const": "attach-saved-roster",
        -        "type": "string"
        -      },
        -      "playerId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "rosterId": {
        -        "maxLength": 64,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "rosterId"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "clockLimitMinutes": {
        +            "anyOf": [
        +              {
        +                "maximum": 300,
        +                "minimum": 5,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "configure-battle",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "maximum": 10000,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "missionPackId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "playerCount": {
        +            "anyOf": [
        +              {
        +                "const": 2,
        +                "type": "number"
        +              },
        +              {
        +                "const": 3,
        +                "type": "number"
        +              },
        +              {
        +                "const": 4,
        +                "type": "number"
        +              }
        +            ]
        +          },
        +          "teamBattle": {
        +            "type": "boolean"
        +          },
        +          "terrainLayoutId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "twistId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "limit",
        +          "missionPackId",
        +          "terrainLayoutId",
        +          "twistId",
        +          "clockLimitMinutes"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reset-setup",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "detach-roster",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "eventToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "lock-league-rosters",
        +            "type": "string"
        +          },
        +          "leagueToken": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "leagueToken"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-setup-step",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-attacker",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "attackerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-first-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "disposition": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-side-disposition",
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "disposition"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "attach-roster",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "primary": {
        +                    "anyOf": [
        +                      {
        +                        "properties": {
        +                          "awards": {
        +                            "items": {
        +                              "properties": {
        +                                "criteria": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 2000,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "cumulative": {
        +                                  "type": "boolean"
        +                                },
        +                                "group": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 100,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "max": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maximum": 100,
        +                                      "minimum": 0,
        +                                      "type": "integer"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "mode": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 40,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "per": {
        +                                  "anyOf": [
        +                                    {
        +                                      "maxLength": 200,
        +                                      "type": "string"
        +                                    },
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "trigger": {
        +                                  "properties": {
        +                                    "phase": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "playerTurn": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMax": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "roundMin": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maximum": 5,
        +                                          "minimum": 1,
        +                                          "type": "integer"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    },
        +                                    "timing": {
        +                                      "anyOf": [
        +                                        {
        +                                          "maxLength": 80,
        +                                          "type": "string"
        +                                        },
        +                                        {
        +                                          "type": "null"
        +                                        }
        +                                      ]
        +                                    }
        +                                  },
        +                                  "required": [
        +                                    "timing",
        +                                    "phase",
        +                                    "playerTurn",
        +                                    "roundMin",
        +                                    "roundMax"
        +                                  ],
        +                                  "type": "object"
        +                                },
        +                                "vp": {
        +                                  "maximum": 100,
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                }
        +                              },
        +                              "required": [
        +                                "vp",
        +                                "per",
        +                                "mode",
        +                                "max",
        +                                "group",
        +                                "cumulative",
        +                                "criteria",
        +                                "trigger"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            "maxItems": 20,
        +                            "type": "array"
        +                          },
        +                          "key": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "name": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "key",
        +                          "name"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "secondaries": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 6,
        +                    "type": "array"
        +                  },
        +                  "secondaryDeck": {
        +                    "items": {
        +                      "properties": {
        +                        "awards": {
        +                          "items": {
        +                            "properties": {
        +                              "criteria": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 2000,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "cumulative": {
        +                                "type": "boolean"
        +                              },
        +                              "group": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 100,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "max": {
        +                                "anyOf": [
        +                                  {
        +                                    "maximum": 100,
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "mode": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 40,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "per": {
        +                                "anyOf": [
        +                                  {
        +                                    "maxLength": 200,
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ]
        +                              },
        +                              "trigger": {
        +                                "properties": {
        +                                  "phase": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "playerTurn": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMax": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "roundMin": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maximum": 5,
        +                                        "minimum": 1,
        +                                        "type": "integer"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "timing": {
        +                                    "anyOf": [
        +                                      {
        +                                        "maxLength": 80,
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "required": [
        +                                  "timing",
        +                                  "phase",
        +                                  "playerTurn",
        +                                  "roundMin",
        +                                  "roundMax"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "vp": {
        +                                "maximum": 100,
        +                                "minimum": 0,
        +                                "type": "integer"
        +                              }
        +                            },
        +                            "required": [
        +                              "vp",
        +                              "per",
        +                              "mode",
        +                              "max",
        +                              "group",
        +                              "cumulative",
        +                              "criteria",
        +                              "trigger"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 60,
        +                    "type": "array"
        +                  },
        +                  "secondaryMode": {
        +                    "enum": [
        +                      "fixed",
        +                      "tactical"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "stratagems": {
        +                    "items": {
        +                      "properties": {
        +                        "cp": {
        +                          "maximum": 6,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "detachment": {
        +                          "maxLength": 249,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "limit": {
        +                          "enum": [
        +                            "phase",
        +                            "turn",
        +                            "battle",
        +                            "unlimited"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "phases": {
        +                          "items": {
        +                            "enum": [
        +                              "command",
        +                              "movement",
        +                              "shooting",
        +                              "charge",
        +                              "fight",
        +                              "end"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 6,
        +                          "type": "array"
        +                        },
        +                        "turn": {
        +                          "enum": [
        +                            "your-turn",
        +                            "opponent-turn",
        +                            "either"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "cp",
        +                        "limit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 48,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "stratagems",
        +                  "secondaries",
        +                  "primary",
        +                  "secondaryMode"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "roster": {
        +            "properties": {
        +              "built": {
        +                "properties": {
        +                  "catalogueId": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "detachment": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 80,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachmentIds": {
        +                    "items": {
        +                      "maxLength": 128,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "detachmentPointBudget": {
        +                    "anyOf": [
        +                      {
        +                        "maximum": 3,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "detachments": {
        +                    "items": {
        +                      "properties": {
        +                        "name": {
        +                          "maxLength": 80,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 3,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "name",
        +                        "points"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 3,
        +                    "type": "array"
        +                  },
        +                  "disposition": {
        +                    "anyOf": [
        +                      {
        +                        "maxLength": 64,
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "limit": {
        +                    "maximum": 10000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "picks": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "catalogueId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "choices": {
        +                          "additionalProperties": {
        +                            "maxLength": 64,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 60,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        },
        +                        "spreads": {
        +                          "additionalProperties": {
        +                            "additionalProperties": {
        +                              "maximum": 60,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "propertyNames": {
        +                              "maxLength": 64,
        +                              "type": "string"
        +                            },
        +                            "type": "object"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "toggles": {
        +                          "additionalProperties": {
        +                            "maximum": 1,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          "propertyNames": {
        +                            "maxLength": 400,
        +                            "type": "string"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "required": [
        +                        "entryId"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 100,
        +                    "type": "array"
        +                  },
        +                  "revision": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "strategicReserveLimit": {
        +                    "maximum": 5000,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  "units": {
        +                    "items": {
        +                      "properties": {
        +                        "attachedTo": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "enhancements": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "entryId": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formationOptions": {
        +                          "items": {
        +                            "enum": [
        +                              "battlefield",
        +                              "strategic-reserves",
        +                              "deep-strike",
        +                              "embarked"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 4,
        +                          "type": "array"
        +                        },
        +                        "group": {
        +                          "enum": [
        +                            "epic-hero",
        +                            "character",
        +                            "battleline",
        +                            "infantry",
        +                            "swarm",
        +                            "mounted",
        +                            "beast",
        +                            "monster",
        +                            "vehicle",
        +                            "drone",
        +                            "transport",
        +                            "fortification",
        +                            "other"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "joined": {
        +                          "items": {
        +                            "properties": {
        +                              "label": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "label",
        +                              "name"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "key": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "models": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "points": {
        +                          "maximum": 10000,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "prebattleRules": {
        +                          "items": {
        +                            "enum": [
        +                              "infiltrators",
        +                              "scouts"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "maxItems": 2,
        +                          "type": "array"
        +                        },
        +                        "strategicReserveExempt": {
        +                          "type": "boolean"
        +                        },
        +                        "transport": {
        +                          "type": "boolean"
        +                        },
        +                        "transportRule": {
        +                          "maxLength": 4000,
        +                          "type": "string"
        +                        },
        +                        "upgrades": {
        +                          "items": {
        +                            "maxLength": 80,
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "wargear": {
        +                          "items": {
        +                            "properties": {
        +                              "count": {
        +                                "maximum": 100,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              "name": {
        +                                "maxLength": 80,
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "name",
        +                              "count"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "maxItems": 200,
        +                          "type": "array"
        +                        },
        +                        "warlord": {
        +                          "type": "boolean"
        +                        },
        +                        "warlordEligible": {
        +                          "type": "boolean"
        +                        },
        +                        "wounds": {
        +                          "maximum": 100,
        +                          "minimum": 1,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "key",
        +                        "name",
        +                        "points",
        +                        "models"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 200,
        +                    "type": "array"
        +                  },
        +                  "waivedRules": {
        +                    "items": {
        +                      "enum": [
        +                        "points-limit",
        +                        "detachments",
        +                        "detachment-points",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 8,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "catalogueId",
        +                  "revision",
        +                  "limit",
        +                  "detachment",
        +                  "disposition",
        +                  "units"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              "reminders": {
        +                "items": {
        +                  "properties": {
        +                    "ability": {
        +                      "maxLength": 80,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "description": {
        +                      "maxLength": 10000,
        +                      "type": "string"
        +                    },
        +                    "key": {
        +                      "maxLength": 240,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "timings": {
        +                      "items": {
        +                        "oneOf": [
        +                          {
        +                            "properties": {
        +                              "moment": {
        +                                "enum": [
        +                                  "phase-start",
        +                                  "phase-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "enum": [
        +                                  "command",
        +                                  "movement",
        +                                  "shooting",
        +                                  "charge",
        +                                  "fight"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "properties": {
        +                              "moment": {
        +                                "enum": [
        +                                  "turn-start",
        +                                  "turn-end"
        +                                ],
        +                                "type": "string"
        +                              },
        +                              "phase": {
        +                                "type": "null"
        +                              },
        +                              "turn": {
        +                                "enum": [
        +                                  "your-turn",
        +                                  "opponent-turn",
        +                                  "either"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "moment",
        +                              "phase",
        +                              "turn"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      "maxItems": 10,
        +                      "minItems": 1,
        +                      "type": "array"
        +                    },
        +                    "unit": {
        +                      "properties": {
        +                        "index": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "name": {
        +                          "maxLength": 80,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "index",
        +                        "name"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "key",
        +                    "ability",
        +                    "description",
        +                    "timings"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "remindersEnabled": {
        +                "type": "boolean"
        +              },
        +              "text": {
        +                "maxLength": 20000,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "text"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "roster"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "destroyed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "destroyed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-prep",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "primary": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "awards": {
        +                    "items": {
        +                      "properties": {
        +                        "criteria": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 2000,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "cumulative": {
        +                          "type": "boolean"
        +                        },
        +                        "group": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 100,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "max": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 100,
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "mode": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 40,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "per": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 200,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "trigger": {
        +                          "properties": {
        +                            "phase": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "playerTurn": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMax": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "roundMin": {
        +                              "anyOf": [
        +                                {
        +                                  "maximum": 5,
        +                                  "minimum": 1,
        +                                  "type": "integer"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "timing": {
        +                              "anyOf": [
        +                                {
        +                                  "maxLength": 80,
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "required": [
        +                            "timing",
        +                            "phase",
        +                            "playerTurn",
        +                            "roundMin",
        +                            "roundMax"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "vp": {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "vp",
        +                        "per",
        +                        "mode",
        +                        "max",
        +                        "group",
        +                        "cumulative",
        +                        "criteria",
        +                        "trigger"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 20,
        +                    "type": "array"
        +                  },
        +                  "key": {
        +                    "maxLength": 64,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "maxLength": 80,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "key",
        +                  "name"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "type": "array"
        +          },
        +          "secondaryDeck": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 60,
        +            "type": "array"
        +          },
        +          "secondaryMode": {
        +            "enum": [
        +              "fixed",
        +              "tactical"
        +            ],
        +            "type": "string"
        +          },
        +          "stratagems": {
        +            "items": {
        +              "properties": {
        +                "cp": {
        +                  "maximum": 6,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "detachment": {
        +                  "maxLength": 249,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "limit": {
        +                  "enum": [
        +                    "phase",
        +                    "turn",
        +                    "battle",
        +                    "unlimited"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "phases": {
        +                  "items": {
        +                    "enum": [
        +                      "command",
        +                      "movement",
        +                      "shooting",
        +                      "charge",
        +                      "fight",
        +                      "end"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "maxItems": 6,
        +                  "type": "array"
        +                },
        +                "turn": {
        +                  "enum": [
        +                    "your-turn",
        +                    "opponent-turn",
        +                    "either"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name",
        +                "cp",
        +                "limit"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 48,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagems",
        +          "secondaries",
        +          "primary",
        +          "secondaryMode"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "deployed": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "deploy-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "deployed"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "formation": {
        +            "enum": [
        +              "battlefield",
        +              "strategic-reserves",
        +              "deep-strike",
        +              "embarked"
        +            ],
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-unit-formation",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "transportKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "formation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-painted",
        +            "type": "string"
        +          },
        +          "painted": {
        +            "type": "boolean"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "painted"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "wound-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "damage-unit",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "unitKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "unitKey",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-deployment",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "set-battlefield",
        +            "type": "string"
        +          },
        +          "patternId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "terrainLayoutId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "patternId",
        +          "terrainLayoutId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "use-stratagem",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "cp": {
        +            "maximum": 6,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "use-new-orders",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          "secondaryKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "stratagemKey": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "stratagemKey",
        +          "secondaryKey",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "score-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "score-settlement",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "round": {
        +            "maximum": 5,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "scores": {
        +            "items": {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "primary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "properties": {
        +                    "category": {
        +                      "const": "secondary",
        +                      "type": "string"
        +                    },
        +                    "delta": {
        +                      "exclusiveMinimum": 0,
        +                      "maximum": 9007199254740991,
        +                      "type": "integer"
        +                    },
        +                    "key": {
        +                      "maxLength": 64,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "const": "achieved",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "key",
        +                    "delta"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "maxItems": 31,
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "scores"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "key": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "set-secondary-status",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "active",
        +              "achieved",
        +              "discarded",
        +              "returned"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "key",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondary",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "draw-secondaries",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondaries": {
        +            "items": {
        +              "properties": {
        +                "awards": {
        +                  "items": {
        +                    "properties": {
        +                      "criteria": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 2000,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "cumulative": {
        +                        "type": "boolean"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 100,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "max": {
        +                        "anyOf": [
        +                          {
        +                            "maximum": 100,
        +                            "minimum": 0,
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "mode": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 40,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "per": {
        +                        "anyOf": [
        +                          {
        +                            "maxLength": 200,
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "trigger": {
        +                        "properties": {
        +                          "phase": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "playerTurn": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMax": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "roundMin": {
        +                            "anyOf": [
        +                              {
        +                                "maximum": 5,
        +                                "minimum": 1,
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "timing": {
        +                            "anyOf": [
        +                              {
        +                                "maxLength": 80,
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "required": [
        +                          "timing",
        +                          "phase",
        +                          "playerTurn",
        +                          "roundMin",
        +                          "roundMax"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "vp": {
        +                        "maximum": 100,
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      }
        +                    },
        +                    "required": [
        +                      "vp",
        +                      "per",
        +                      "mode",
        +                      "max",
        +                      "group",
        +                      "cumulative",
        +                      "criteria",
        +                      "trigger"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "maxItems": 20,
        +                  "type": "array"
        +                },
        +                "key": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "maxLength": 80,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "key",
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "selected": {
        +            "const": true,
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondaries"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-draw",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "acknowledge-scoring",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "select-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "secondary": {
        +            "properties": {
        +              "awards": {
        +                "items": {
        +                  "properties": {
        +                    "criteria": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 2000,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "cumulative": {
        +                      "type": "boolean"
        +                    },
        +                    "group": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 100,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "max": {
        +                      "anyOf": [
        +                        {
        +                          "maximum": 100,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "mode": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 40,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "per": {
        +                      "anyOf": [
        +                        {
        +                          "maxLength": 200,
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "trigger": {
        +                      "properties": {
        +                        "phase": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "playerTurn": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMax": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "roundMin": {
        +                          "anyOf": [
        +                            {
        +                              "maximum": 5,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "timing": {
        +                          "anyOf": [
        +                            {
        +                              "maxLength": 80,
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "timing",
        +                        "phase",
        +                        "playerTurn",
        +                        "roundMin",
        +                        "roundMax"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "vp": {
        +                      "maximum": 100,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "required": [
        +                    "vp",
        +                    "per",
        +                    "mode",
        +                    "max",
        +                    "group",
        +                    "cumulative",
        +                    "criteria",
        +                    "trigger"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "key": {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "name": {
        +                "maxLength": 80,
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "name"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "secondary"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reveal-secret",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "attackerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "firstPlayerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "begin-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "firstPlayerId"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "adjust-cp",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "gainCp": {
        +            "type": "boolean"
        +          },
        +          "keys": {
        +            "items": {
        +              "maxLength": 64,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "kind": {
        +            "const": "resolve-tactical-hand",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          },
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "score",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "category",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "delta": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "correct-player",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "resource": {
        +            "enum": [
        +              "cp",
        +              "primary",
        +              "secondary"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "playerId",
        +          "resource",
        +          "delta"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "settle-opponent-turn",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "request-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "cancel-advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "advance",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "pause-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "resume-clock",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "concededBy": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "kind": {
        +            "const": "end-battle",
        +            "type": "string"
        +          },
        +          "reason": {
        +            "enum": [
        +              "completed",
        +              "finished-early",
        +              "conceded"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "reopen-battle",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "kind": {
        +            "const": "undo",
        +            "type": "string"
        +          },
        +          "target": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "target"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "kind": {
        +        "const": "attach-saved-roster",
        +        "type": "string"
        +      },
        +      "playerId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "rosterId": {
        +        "maxLength": 64,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "rosterId"
        +    ],
        +    "type": "object"
        +  }
        +]

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives LLMs structured access to Warhammer 40,000 (10th edition) game data: faction lists, unit datasheets, stratagems, detachments and enhancements.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Warhammer Oracle is an MCP server that gives AI assistants accurate Warhammer 40K, Combat Patrol, and Kill Team rules, unit stats, and game flow - so they stop hallucinating rules mid-game. It contains 6 tools (lookup, search, compare units, keywords, phases) covering 2,642 40K units and 506 Kill Team operatives across 48 factions.
    14
    690 npm
    11
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to pull live, keyless worldstate data — the Plains of Eidolon day/night cycle, Cambion Drift, Orb Vallis, the daily Sortie, Baro Ki'Teer, active Void Fissures and Invasions — and to fuzzy-search item data such as warframes, weapons and mods. It can be reached through MCP clients, a scoped gateway endpoint, or directly over HTTP.
    5 npm
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables long-form tabletop narrative play with durable campaigns, profiles, conflict phases, and branching storylines. Provides session-scoped MCP tools for lobby and play phases, including administrator controls for access, snapshots, and branches.
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.