Skip to main content
Glama

Server Details

Read-only access to Praetorium’s verified game reference. Search missions, rules, factions, and datasheets, or retrieve structured data for roster planning with source attribution.

Ownership verified
Status
Healthy
Uptime
99.9% over 34 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 15 tools

Disambiguation3/5

The battle and roster tools are clearly distinct, but the reference cluster (list_reference, list_factions, search_reference, get_reference, get_reference_record) has genuinely fuzzy boundaries — list_factions duplicates a stated capability of list_reference, and get_reference vs get_reference_record differ only by 'excerpt document' vs 'structured record.' The descriptions help sort them out, but an agent still has to read carefully to pick the right entry point.

Naming Consistency5/5

Every tool follows a clean verb_noun snake_case pattern (create_battle, get_my_battle, list_my_rosters, search_reference, simulate_combat, submit_battle_action). The 'my_' infix is applied consistently to the signed-in-player variants, making ownership scoping predictable.

Tool Count5/5

15 tools for a domain spanning rosters, battles, rules reference, and combat simulation is well-scoped and sits at the top of the sensible range. Each area gets a small, purposeful cluster rather than a sprawl of one-off endpoints.

Completeness3/5

Roster and reference surfaces are strong (list/get/save/visibility plus layered reference lookup), but there are real dead ends: no delete_roster, no way to conclude or report a finished battle, and no join/seat-management operation to complement create_battle. Battle flow effectively stops at create + sit + append actions.

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.

NameRequiredDescriptionDefault
limitNo
allyIdNo
casualNo
manualNo
fixtureNo
groupTokenNo
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 state readOnlyHint=false, destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is largely covered. The description adds useful auth context with 'Requires mcp:write,' but it does not explain what the destructive hint means in practice or what side effects creation has.

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 two short sentences and front-loads the core action. The phrase 'using the same rules as the site' is vague, but it does not bloat the definition.

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 10-parameter mutation tool with no schema descriptions and no output schema, the description is far too sparse. It covers purpose and write permission, but leaves parameter usage, required combinations, and behavioral consequences largely unexplained.

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 10 parameters, so the description must carry the burden. It only loosely hints at player seats via 'named player seats' and never explains any parameter names, formats, defaults, or valid combinations such as guestNames, opponentIds, casual, manual, or missionPackId.

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 clear verb and resource: 'Creates a battle,' and adds that it uses named player seats. This distinguishes it from read/list siblings, though it does not explicitly contrast with related tools like save_roster or submit_battle_action.

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 usage-related detail is the prerequisite 'Requires mcp:write.' There is no guidance on when to use create_battle versus alternatives such as simulate_combat or submit_battle_action, nor any exclusions or preconditions beyond the write scope.

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.

NameRequiredDescriptionDefault
tokenYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context by stating the authorization requirement (mcp:read) and that the view is current/seated, but it does not explain error behavior or return characteristics.

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, front-loaded with the purpose and followed by the permission requirement. There is no wasted text and the key information is easy to locate.

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 one-parameter read tool, the description explains the action and permission requirement but omits the only parameter entirely. With no output schema and no parameter documentation in the schema, an agent still lacks guidance on what token to supply and what the "seated view" return will contain.

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?

The tool has one required parameter, token, and schema description coverage is 0%. The description does not mention the token parameter at all, so it does not clarify whether the token identifies the battle, represents an auth token, or has any format constraints beyond what the schema silently enforces.

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 names a specific verb ("Returns") and resource ("battle") and scopes it to the signed-in player. It is clear this reads one battle rather than listing battles, but it does not explicitly differentiate itself from the closest sibling, 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?

The description provides no guidance on when to use this tool versus list_my_battles, submit_battle_action, or other battle-related siblings. The signed-in-player scope is useful context, but not an explicit usage rule or exclusion.

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 one roster owned by the signed-in player, by an id from list_my_rosters. summary names each unit with its points, models, wargear, enhancements, Warlord and attachments, and gives the total and any problems that stop the list being fielded; it is null while army data is unavailable. roster holds the saved choices by catalogue id, the shape save_roster takes. Requires mcp:read.

NameRequiredDescriptionDefault
idYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description goes beyond by adding the required scope mcp:read and the conditional-null behavior of summary when army data is unavailable. It does not describe the failure mode when an id is missing or unauthorized, which is the main remaining behavioral gap.

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 dense sentences, front-loaded with the return contract and ending on the auth requirement. The middle sentence is a long enumeration of summary contents but every item is a field the caller will encounter, so it earns its length.

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 no output schema, the description correctly takes on the return contract: it names both top-level parts (summary, roster), the null condition, and cross-references save_roster for the shape of a roster rather than re-documenting it. A brief note on what happens for an unknown/inaccessible id is the only material omission.

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 0%, so the description must carry the parameter meaning, and it does: the single id identifies a roster owned by the caller and should come from list_my_rosters, which is exactly the provenance an agent needs. It adds no format or bounds detail beyond the schema's min/max length, but the provenance guidance is the non-obvious part.

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

Purpose5/5

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

States a concrete verb (returns) and resource (one roster), scoped to the signed-in player and keyed by an id drawn from list_my_rosters. An agent can immediately distinguish this from list_my_rosters (list vs. single) and save_roster (write).

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?

'by an id from list_my_rosters' names the sibling to call first and thereby establishes the lookup sequence, and 'owned by the signed-in player' rules out cross-user reads. It stops short of stating what happens when the id is unknown or not owned, or naming an explicit alternative for that case.

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.

NameRequiredDescriptionDefault
idYesA reference id such as datasheet:necrons:necron-warriors: a result id from search_reference, a mission pack id from list_reference, or a referenceId from list_units or simulate_combat. Names, URLs, and unit ids are not reference ids.

Output Schema

NameRequiredDescription
idYes
urlYes
kindYes
titleYes
factionYes
sectionsYes
revisionsYes
attributionYes

TDQS

A4/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 the description adds real behavior beyond them: the document is bounded, includes revisions and attribution, and sections may withhold rules text while exposing textSources with a pinned upstream file and record id. That withholding behavior is the kind of thing an agent could not infer. It omits error behavior for ids that don't resolve.

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, front-loaded with what is returned, followed by the one non-obvious edge case. Nothing is wasted and nothing important is buried.

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 and annotations covering safety, the description correctly focuses on the withheld-text path rather than return shapes. The remaining gap is the lack of differentiation from get_reference_record, a sibling whose name strongly overlaps.

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%, so the 'id' parameter and its accepted sources are fully documented in the schema itself. The description adds no format or validation detail beyond that, 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 ('Reads the complete bounded document... with its revisions and attribution') and anchors it to the sibling that produces the id (search_reference). It does not differentiate itself from the sibling get_reference_record, which an agent must distinguish by name alone.

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?

Clear usage context: this is the fetch step that follows search_reference, and it names the fallback path (textSources) for withheld rules text. It stops short of stating when to use get_reference_record instead, so exclusions are missing.

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.

NameRequiredDescriptionDefault
idYesA reference id such as datasheet:necrons:necron-warriors: a result id from search_reference, a mission pack id from list_reference, or a referenceId from list_units or simulate_combat. Names, URLs, and unit ids are not reference ids.

Output 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, so the safety profile is covered. The description adds genuine behavioral context beyond that: that records withholding rules text expose textSources pointing at a pinned upstream file and record id, which tells the agent to expect partial payloads rather than missing data.

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 sentences with the core action front-loaded and the textSources caveat second. No filler, though the payload enumeration in sentence one is slightly 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?

With an output schema present, the description needn't detail return shapes, and it correctly focuses on what the record contains plus the withheld-rules-text behavior. The one real gap is failing to clarify its relationship to the get_reference sibling.

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 id parameter already documents its accepted sources (search_reference, list_reference, list_units, simulate_combat, datasheet: prefix) and explicitly excludes names, URLs, and unit ids. The description adds nothing further on the parameter, so the 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 payload categories (mission cards, deployments, terrain geometry, detachments, datasheets). However, it never distinguishes itself from the sibling get_reference, which by name sounds nearly identical, leaving the agent to guess which to call.

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 caller arrives from search_reference, and the id schema hints at list_units/simulate_combat provenance. But there is no explicit when-to-use or when-not statement, and no guidance versus get_reference or list_reference.

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.

NameRequiredDescriptionDefault

No parameters

Output 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, destructiveHint=false and closed-world, so the safety profile is fully covered and the description doesn't contradict it. The description adds the functional context that factions serve as filter values, but says nothing about whether the set is static, how large it is, or whether it is exhaustive, which would help an agent decide between listing and querying.

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 sentence that front-loads the resource and immediately supplies the reason to call it. No filler, no restatement 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?

With an output schema present, the description need not explain return values, and a zero-parameter read tool needs little more. What is missing is the tie-in to the specific sibling (search_reference) that consumes these faction values, which would close the loop for an agent.

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?

There are zero parameters, so the baseline is 4 and there is no schema surface for the description to compensate for. The schema is an empty object and the description correctly describes a no-argument enumeration call.

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 opens with a specific verb and resource ('Lists the factions') and adds the role those results play ('narrow reference searches'), which separates it from list_units and list_reference. It never names a sibling explicitly, so differentiation is inferred from the subject matter rather than stated.

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 'can be used to narrow reference searches' implies the tool is called to obtain filter values before search_reference or list_reference, but that workflow is never spelled out and no alternative is named. Usage is implied rather than prescribed.

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.

NameRequiredDescriptionDefault
beforeNo

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 the description adds two things they don't cover: the 25-item page cap with cursor continuation and the required mcp:read scope. That is genuine context beyond structured fields, though return shape remains unspecified.

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 terse sentences, zero filler, with the page-size limit front-loaded and the permission requirement trailing as a prerequisite.

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-required-parameter read tool with no output schema, the definition covers count, pagination, and auth. A slightly fuller account of what a battle record contains or how to source the cursor's at/id would close the remaining 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 0% and the single parameter is an object named 'before' holding at/id fields. The description mentions 'a cursor for the next page' but never ties it to the 'before' parameter or explains how to obtain its at/id values, so it only partially compensates for the undocumented schema.

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 clear verb and resource (lists battles) with implicit 'my' scope and page size. An agent can tell it apart from get_my_battle or list_my_rosters, though it never spells out that it returns only the caller's 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?

No guidance on when to use this versus get_my_battle or other list tools, and no mention of when pagination is needed. The only conditional statement is the auth requirement.

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 description's burden is lighter. It adds a concrete, non-schema behavioral requirement — 'Requires mcp:read' — which the agent cannot get from annotations. It stops short of describing result shape or whether all rosters are returned unscoped.

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 with zero waste; the resource and scope come first, the auth prerequisite second. Nothing is repeated from the title or annotations.

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 no parameters, no output schema, and full annotation coverage, the description supplies what an agent needs to select and call it, plus an auth scope note. A brief mention of return contents or result completeness would close the last 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 per the baseline rule the description need not document parameter semantics. Nothing in the description misleads about inputs.

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+resource and scope ('rosters saved to the signed-in Praetorium account'), which is more precise than the title alone. It distinguishes itself implicitly from get_my_roster (singular) and save_roster by being a listing, but never names those siblings.

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 by 'lists the rosters saved to the signed-in account' — an agent can infer this is the enumeration tool rather than a detail fetch. However, it gives no explicit when-to-use vs get_my_roster or list_my_battles, and no exclusions or follow-up routing.

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.

NameRequiredDescriptionDefault

No parameters

Output 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?

The annotations already declare this as a read-only, idempotent, non-destructive, closed-world operation, so the safety profile is covered. The description adds only the content scope of the catalogue and does not describe pagination, ordering, authentication, or other behavioral constraints.

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 redundant or filler language. Every listed item contributes to describing the catalogue contents.

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 no-parameter catalogue-listing tool with rich annotations and an output schema, the description is largely complete. It could mention that it takes no arguments or how the catalogue is organized, but the output schema can carry return details.

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 has zero parameters, so there is no parameter semantics burden for the description to compensate for. Baseline 4 is appropriate.

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 names a specific catalogue resource and enumerates the kinds of entries it discovers (factions, mission packs, rule documents, reference kinds, active source revisions). It is clear what the tool returns, though it does not explicitly differentiate itself from siblings like list_factions or search_reference.

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 description implies a discovery/catalogue-browsing use case, but it does not state when to use this tool instead of get_reference, search_reference, or list_factions. No exclusions or prerequisites are provided.

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, including one a chapter takes from its codex, to list only the units it allows and 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. A unit’s points is what its smallest size costs in this battle size and detachment, including any wargear or enhancement the detachment makes it take; costs is the Munitorum Field Manual table for every size. Legends and Crucible datasheets are left out unless nonMatchedPlay is true. A large faction such as a Space Marine chapter can exceed what an assistant reads at once, so pass query to list only the units whose name or keywords contain it.

NameRequiredDescriptionDefault
queryNoList only units whose name or keywords contain this text, such as Terminator or Character.
factionYesFaction id, URL slug, or display name from list_reference.
battleSizeNoBattle size in points for size-dependent limits.
detachmentNoDetachment id, slug, or display name.
nonMatchedPlayNoAlso list Legends and Crucible datasheets, which matched play does not allow.

Output Schema

NameRequiredDescription
queryYes
unitsYes
factionYes
revisionsYes
battleSizeYes
detachmentYes
nonMatchedPlayYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds substantial context: Legends and Crucible are excluded unless nonMatchedPlay, rules text lives at textSources, and points vs costs are defined precisely. These are behavioral facts not present in annotations.

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 return behavior and dense with useful detail, with little filler. The points/costs sentence is long and slightly convoluted, costing a bit of readability.

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

Completeness5/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 needn't explain return shape, and it still covers filtering, exclusions, detachment semantics, and size-dependent cost behavior. An agent has everything needed to call it correctly.

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 baseline is 3, but the description goes beyond the schema by clarifying that query matches name or keywords, that detachment scopes results to allowed units, and by distinguishing 'points' from 'costs'. This adds real meaning over the field descriptions.

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

Purpose5/5

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

The first sentence states a specific verb and resource ('Returns every pickable unit') plus the exact fields returned and that the response is bounded. This is clearly distinguishable from reference-listing siblings like list_reference or list_factions.

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 concrete conditions: include a detachment to list only its allowed units, and pass query for large factions that exceed a single read. It does not explicitly name sibling alternatives, but the internal query/no-query and detachment/no-detachment guidance is clear.

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.

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

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag destructiveHint and non-idempotency, and the description adds value beyond that: the mcp:write scope requirement and the subtle preservation behavior of omitting pointsBudget. It does not state that the entire roster payload (picks, prep) is replaced wholesale, which is the main destructive consequence an agent should know.

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?

Four dense sentences, each covering a distinct behavioral rule, with the create/edit distinction front-loaded. No filler, though the limit sentence packs several constraints together and is slightly harder to parse than necessary.

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 destructive write with no output schema and no schema descriptions, the description covers the highest-risk semantics (mode selection, battle size, budget override, auth) but leaves the bulk of the payload — picks structure, prep, detachmentIds, waivedRules — entirely unexplained. Adequate to avoid a wrong mode, not adequate to build a valid request from description alone.

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%, so the description must compensate, and it does so well for limit (enumerating 1000/2000/3000, 600 for King of the Colosseum — information absent from the bare integer schema) and pointsBudget. However, only 3 of 14 parameters are addressed; name, catalogueId, detachmentIds, disposition, picks, prep, source, visibility, waivedRules and borrowedDetachmentId get no semantic help at all.

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

Purpose5/5

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

"Saves a complete roster" is a specific verb+resource, and the description immediately splits the two modes (pass id to edit an owned roster, omit to create). This cleanly separates it from read-side siblings like get_my_roster and list_my_rosters.

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?

Explicit branching rules for id (edit vs create) and for pointsBudget (omit = keep saved budget, null = standard total), which is exactly the kind of conditional guidance an agent needs. It does not mention when to use the visible sibling set_roster_visibility instead of embedding visibility here, so it stops short of full alternative routing.

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.

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

Output Schema

NameRequiredDescription
queryYes
resultsYes
revisionsYes
nextCursorYes

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, so the description is free to add real behavioral context, which it does: bounded excerpts, canonical URLs, source revisions, attribution, and the important limitation that rules text itself is not returned and records point upstream. It stops short of describing pagination or result-ordering 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?

Three tight sentences, front-loaded with what is searched, followed by what comes back and the key limitation. No filler or redundant restatement 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?

An output schema exists, so return values needn't be spelled out, and the description still usefully characterizes the payload and its upstream pointers. The main omission is pagination and the scoping parameters (pack, faction, document, cursor), which leaves the agent guessing how to narrow or page large result sets.

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 only 14%, so the description must carry more weight. It does add meaning for 'query' (name, rule number, ability, weapon, keyword) and implies the 'kinds' filter by naming datasheets, missions, rules, and detachments, but says nothing about pack, faction, document, limit, or cursor — a third of the surface remains undocumented.

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 ('Searches Praetorium's missions, rules, detachments, and datasheets') and enumerates the lookup axes (name, number, keyword, value), so an agent knows exactly what it retrieves. It does not explicitly contrast itself with siblings like list_reference or get_reference_record, but the search framing is distinctive enough.

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: the enumerated lookup axes suggest this is the tool for query-driven discovery, and the 'rules text is not included' line hints at when to follow up elsewhere. There is no explicit when-to-use/when-not or named alternative (e.g., use list_reference to browse by kind without a query).

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.

NameRequiredDescriptionDefault
idYes
visibilityYes

TDQS

B3.2/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=true, so the description only needs to add context. It adds the auth scope requirement, which is genuinely useful, but says nothing about the consequences of flipping a roster to 'public' (exposure of data, revertibility) — a notable gap for a destructive write.

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 with zero padding, and the operation is front-loaded before the auth requirement. Efficient, though it is terse to the point of under-specifying parameters.

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 two-parameter destructive mutation with no output schema, the description covers what it does and the required scope, which is a reasonable minimum. It omits the effect of each visibility value and any warning about public exposure, which an agent would need to act safely.

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 the burden, and it does not: neither 'id' (roster identifier) nor 'visibility' (private/unlisted/public semantics and what each means for discoverability) is explained. The enum exists in the schema, but the meaning of each level is left entirely to inference.

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 ('Changes the visibility of an owned roster'), which is clearly distinct from siblings like save_roster or get_my_roster. It does not explicitly name an alternative, but the operation 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 prerequisite 'Requires mcp:write' and the ownership constraint ('owned roster') give implied guidance on when the call is valid. There is no explicit when-to-use/when-not framing or mention of alternatives such as save_roster for other roster edits.

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. Rules the simulator cannot calculate are never approximated: a phase it cannot estimate has status refused with its reasons, and recognised rules it leaves out are listed under notCalculated, so explain those gaps rather than retrying. Errors are reserved for unknown factions or units, illegal unit sizes or attachments, and unavailable reference data. It uses default loadouts, and a side fields a detachment's rules and offers its stratagems only when its detachment is named; unit sizes and attachments must be legal.

NameRequiredDescriptionDefault
attackerYes
defenderYes
modifiersNoSituational modifiers the simulator page offers, such as { "all": { "cover": true, "hitModifier": -1 } }, { "melee": { "charged": true } }, or { "target": { "invulnerable": 4 } }. commandReroll spends one Command Re-roll per phase on the first failed hit, wound, or save roll, or the first single-die Attacks roll below its average; compare with a run without it to judge the CP.
weaponModesNoWeapon mode choices by key from a previous result, such as a frag or krak profile.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it discloses refusal semantics (a non-computable phase returns status 'refused' with reasons), the notCalculated list for recognised-but-omitted rules, and the precise error surface (unknown factions/units, illegal sizes/attachments, unavailable reference data). It also states the default-loadout assumption up front, which is exactly the hidden default an agent would otherwise misjudge results with.

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?

Front-loaded with the core verb/resource, then scope, then returns, then defaults and error semantics — a sensible priority order for a tool this complex. The long return enumeration is justified because no output schema exists, and no sentence is filler.

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 4-parameter, deeply nested tool with no output schema, it covers inputs, defaults, refusal/error behavior, and return contents thoroughly. The gap is the unmentioned `modifiers` object, which an agent would only discover by reading the schema, leaving situational-modifier usage under-explained by the prose.

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?

With 50% schema coverage, the description compensates for the important ambiguity: rules and weaponModes keys must come from a previous result, detachment governs which rules/stratagems apply, attached units must be legal and come from canBeLedBy/canBeSupportedBy, and models must be a legal unit size. The notable omission is the entire `modifiers` object — the single largest and most semantically dense parameter — which is never mentioned in the description (only its schema blurb covers it).

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

Purpose5/5

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

States a specific verb and resource ('Runs Praetorium's exact combat simulator') plus the exact scope: one attacker with attached leaders versus one defender at full strength, across shooting, melee, and combined sequences. An agent immediately knows this is a deterministic estimate tool, not a battle-action or roster tool, distinguishing it from every sibling.

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?

Explicitly says passive datasheet rules apply by default while stratagems and conditional rules stay off until chosen, and that a side only gets detachment rules/stratagems when a detachment is named. It also gives a strong operating instruction for gaps: 'explain those gaps rather than retrying,' and enumerates what errors are reserved for. Missing only an explicit pointer to which sibling produces the legal inputs (list_units is named in the schema, not the description).

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.

NameRequiredDescriptionDefault
tokenYes
commandYes
expectedSeqYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already state that this is a non-read-only, non-idempotent, destructive operation. The description adds useful behavioral context beyond annotations: it appends rather than overwrites, enforces optimistic concurrency via expectedSeq, and requires mcp:write. It remains silent on failure behavior and return semantics, but it is consistent with 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?

The description is two tightly written sentences with the core operation and the sequence precondition front-loaded. There is no filler or repetition.

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?

This is a complex mutation tool whose command parameter has dozens of possible shapes, with no schema descriptions and no output schema. The description covers auth and expectedSeq but omits command-kind semantics, mismatch handling, and return behavior, so it is not complete enough for safe invocation.

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 compensate. It clarifies expectedSeq as a concurrency token and implies command is a battle command, but it never explains token or the many command variants in the large anyOf schema. The parameter guidance is therefore far too thin for this schema.

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 uses a specific verb and resource: 'Appends a legal battle command'. It also adds the key execution condition that the append happens only when expectedSeq matches the current log. It does not explicitly distinguish this tool from siblings such as create_battle or simulate_combat, so it falls 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?

The description gives an important precondition: use only when expectedSeq matches the current log, and it notes the mcp:write requirement. However, it does not explain when to choose this tool over alternatives like create_battle or simulate_combat, nor does it describe what to do when the sequence check fails.

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. 1 tool update
    • Changedcreate_battle2 fields changed
      • removedInput schema / properties / clubToken
        Removed value: -{
        -  "maxLength": 64,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • addedInput schema / properties / groupToken
        Added value: +{
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
  2. 1 tool update
    • Changedsimulate_combat4 fields changed
      • changedInput schema / properties / modifiers / description
        Previous value: -"Situational modifiers the simulator page offers, such as { \"all\": { \"cover\": true, \"hitModifier\": -1 } }, { \"melee\": { \"charged\": true } }, or { \"target\": { \"invulnerable\": 4 } }."New value: +"Situational modifiers the simulator page offers, such as { \"all\": { \"cover\": true, \"hitModifier\": -1 } }, { \"melee\": { \"charged\": true } }, or { \"target\": { \"invulnerable\": 4 } }. commandReroll spends one Command Re-roll per phase on the first failed hit, wound, or save roll, or the first single-die Attacks roll below its average; compare with a run without it to judge the CP."
      • addedInput schema / properties / modifiers / properties / all / properties / commandReroll
        Added value: +{
        +  "enum": [
        +    "attacks",
        +    "hit",
        +    "wound",
        +    "save",
        +    "damage"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / modifiers / properties / melee / properties / commandReroll
        Added value: +{
        +  "enum": [
        +    "attacks",
        +    "hit",
        +    "wound",
        +    "save",
        +    "damage"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / modifiers / properties / ranged / properties / commandReroll
        Added value: +{
        +  "enum": [
        +    "attacks",
        +    "hit",
        +    "wound",
        +    "save",
        +    "damage"
        +  ],
        +  "type": "string"
        +}
  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": {
        -          "armyPoints": {
        -            "anyOf": [
        -              {
        -                "items": {
        -                  "maximum": 10000,
        -                  "minimum": 1,
        -                  "type": "integer"
        -                },
        -                "maxItems": 2,
        -                "minItems": 2,
        -                "type": "array"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "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": {
        -          "clubId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "set-battle-club",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "clubId"
        -        ],
        -        "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"
        -          },
        -          "warlords": {
        -            "items": {
        -              "properties": {
        -                "playerId": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "side": {
        -                  "maximum": 1,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "side",
        -                "playerId"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "type": "array"
        -          }
        -        },
        -        "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": {
        -          "checked": {
        -            "type": "boolean"
        -          },
        -          "kind": {
        -            "const": "set-setup-checked",
        -            "type": "string"
        -          },
        -          "step": {
        -            "maximum": 9,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "step",
        -          "checked"
        -        ],
        -        "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": "set-side-warlord",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "playerId"
        -        ],
        -        "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"
        -                        },
        -                        "embarkedIn": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "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"
        -                  },
        -                  "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"
        -                        },
        -                        "embarkedSpace": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 1000,
        -                          "type": "integer"
        -                        },
        -                        "embarksWithBodyguard": {
        -                          "type": "boolean"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                        },
        -                        "startsEmbarkedIn": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "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",
        -                        "warlord",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 9,
        -                    "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": 200,
        -                "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"
        -                },
        -                "embarkedIn": {
        -                  "maximum": 99,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "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"
        -          },
        -          "pointsBudget": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 500,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "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": 200,
        -                    "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",
        -                "warlord",
        -                "kotc-infantry",
        -                "kotc-warlord",
        -                "kotc-epic-heroes",
        -                "kotc-toughness",
        -                "kotc-datasheet-copies"
        -              ],
        -              "type": "string"
        -            },
        -            "maxItems": 9,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "name",
        -          "catalogueId",
        -          "detachmentIds",
        -          "disposition",
        -          "limit",
        -          "picks",
        -          "prep"
        -        ],
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "attach-draft-roster",
        -        "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"
        -            },
        -            "whileDestroyed": {
        -              "type": "boolean"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "ability",
        -            "description",
        -            "timings"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 200,
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "draft"
        -    ],
        -    "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"
        +                  },
        +                  "objective": {
        +                    "properties": {
        +                      "key": {
        +                        "maxLength": 128,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "maxLength": 80,
        +                        "minLength": 1,
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "key",
        +                      "name"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "kind",
        +                  "objective"
        +                ],
        +                "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": {
        +          "armyPoints": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "maximum": 10000,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "maxItems": 2,
        +                "minItems": 2,
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "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": {
        +          "clubId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "set-battle-club",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "clubId"
        +        ],
        +        "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"
        +          },
        +          "warlords": {
        +            "items": {
        +              "properties": {
        +                "playerId": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "playerId"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          }
        +        },
        +        "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": {
        +          "checked": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-setup-checked",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step",
        +          "checked"
        +        ],
        +        "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": "set-side-warlord",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "playerId"
        +        ],
        +        "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"
        +                        },
        +                        "embarkedIn": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "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"
        +                  },
        +                  "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"
        +                        },
        +                        "embarkedSpace": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 1000,
        +                          "type": "integer"
        +                        },
        +                        "embarksWithBodyguard": {
        +                          "type": "boolean"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                        },
        +                        "startsEmbarkedIn": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "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",
        +                        "warlord",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 9,
        +                    "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": 200,
        +                "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"
        +                },
        +                "embarkedIn": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "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"
        +          },
        +          "pointsBudget": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 500,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "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": 200,
        +                    "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",
        +                "warlord",
        +                "kotc-infantry",
        +                "kotc-warlord",
        +                "kotc-epic-heroes",
        +                "kotc-toughness",
        +                "kotc-datasheet-copies"
        +              ],
        +              "type": "string"
        +            },
        +            "maxItems": 9,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "catalogueId",
        +          "detachmentIds",
        +          "disposition",
        +          "limit",
        +          "picks",
        +          "prep"
        +        ],
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "attach-draft-roster",
        +        "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"
        +            },
        +            "whileDestroyed": {
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "ability",
        +            "description",
        +            "timings"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 200,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "draft"
        +    ],
        +    "type": "object"
        +  }
        +]
  4. 2 tool updates
    • Changedlist_units10 fields changed
      • addedInput schema / properties / nonMatchedPlay
        Added value: +{
        +  "default": false,
        +  "description": "Also list Legends and Crucible datasheets, which matched play does not allow.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "List only units whose name or keywords contain this text, such as Terminator or Character.",
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / nonMatchedPlay
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / query
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / units / items / properties / costs / items / properties / copies
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / units / items / properties / costs / items / properties / detachment / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +"string"
      • changedOutput schema / properties / units / items / properties / costs / items / properties / faction / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +"string"
      • changedOutput schema / properties / units / items / properties / costs / items / properties / keyword / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +"string"
      • changedOutput schema / properties / units / items / properties / costs / items / required
        Previous value: -[
        -  "models",
        -  "cost",
        -  "keyword",
        -  "faction",
        -  "detachment"
        -]New value: +[
        +  "models",
        +  "cost"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "faction",
        -  "battleSize",
        -  "detachment",
        -  "units",
        -  "revisions"
        -]New value: +[
        +  "faction",
        +  "battleSize",
        +  "nonMatchedPlay",
        +  "query",
        +  "detachment",
        +  "units",
        +  "revisions"
        +]
    • Changedsimulate_combat2 fields changed
      • addedInput schema / properties / attacker / properties / detachment
        Added value: +{
        +  "description": "Detachment id, slug, or name from list_units, to field its rules and offer its stratagems; omit it for none.",
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / defender / properties / detachment
        Added value: +{
        +  "description": "Detachment id, slug, or name from list_units, to field its rules and offer its stratagems; omit it for none.",
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
  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": {
        -          "armyPoints": {
        -            "anyOf": [
        -              {
        -                "items": {
        -                  "maximum": 10000,
        -                  "minimum": 1,
        -                  "type": "integer"
        -                },
        -                "maxItems": 2,
        -                "minItems": 2,
        -                "type": "array"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "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": {
        -          "clubId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "set-battle-club",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "clubId"
        -        ],
        -        "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"
        -          },
        -          "warlords": {
        -            "items": {
        -              "properties": {
        -                "playerId": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "side": {
        -                  "maximum": 1,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "side",
        -                "playerId"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "type": "array"
        -          }
        -        },
        -        "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": "set-side-warlord",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "playerId"
        -        ],
        -        "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"
        -                        },
        -                        "embarkedIn": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "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"
        -                  },
        -                  "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"
        -                        },
        -                        "embarkedSpace": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 1000,
        -                          "type": "integer"
        -                        },
        -                        "embarksWithBodyguard": {
        -                          "type": "boolean"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                        },
        -                        "startsEmbarkedIn": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "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",
        -                        "warlord",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 9,
        -                    "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": 200,
        -                "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"
        -                },
        -                "embarkedIn": {
        -                  "maximum": 99,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "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"
        -          },
        -          "pointsBudget": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 500,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "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": 200,
        -                    "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",
        -                "warlord",
        -                "kotc-infantry",
        -                "kotc-warlord",
        -                "kotc-epic-heroes",
        -                "kotc-toughness",
        -                "kotc-datasheet-copies"
        -              ],
        -              "type": "string"
        -            },
        -            "maxItems": 9,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "name",
        -          "catalogueId",
        -          "detachmentIds",
        -          "disposition",
        -          "limit",
        -          "picks",
        -          "prep"
        -        ],
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "attach-draft-roster",
        -        "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"
        -            },
        -            "whileDestroyed": {
        -              "type": "boolean"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "ability",
        -            "description",
        -            "timings"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 200,
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "draft"
        -    ],
        -    "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": {
        +          "armyPoints": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "maximum": 10000,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "maxItems": 2,
        +                "minItems": 2,
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "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": {
        +          "clubId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "set-battle-club",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "clubId"
        +        ],
        +        "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"
        +          },
        +          "warlords": {
        +            "items": {
        +              "properties": {
        +                "playerId": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "playerId"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          }
        +        },
        +        "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": {
        +          "checked": {
        +            "type": "boolean"
        +          },
        +          "kind": {
        +            "const": "set-setup-checked",
        +            "type": "string"
        +          },
        +          "step": {
        +            "maximum": 9,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "step",
        +          "checked"
        +        ],
        +        "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": "set-side-warlord",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "playerId"
        +        ],
        +        "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"
        +                        },
        +                        "embarkedIn": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "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"
        +                  },
        +                  "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"
        +                        },
        +                        "embarkedSpace": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 1000,
        +                          "type": "integer"
        +                        },
        +                        "embarksWithBodyguard": {
        +                          "type": "boolean"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                        },
        +                        "startsEmbarkedIn": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "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",
        +                        "warlord",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 9,
        +                    "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": 200,
        +                "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"
        +                },
        +                "embarkedIn": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "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"
        +          },
        +          "pointsBudget": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 500,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "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": 200,
        +                    "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",
        +                "warlord",
        +                "kotc-infantry",
        +                "kotc-warlord",
        +                "kotc-epic-heroes",
        +                "kotc-toughness",
        +                "kotc-datasheet-copies"
        +              ],
        +              "type": "string"
        +            },
        +            "maxItems": 9,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "catalogueId",
        +          "detachmentIds",
        +          "disposition",
        +          "limit",
        +          "picks",
        +          "prep"
        +        ],
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "attach-draft-roster",
        +        "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"
        +            },
        +            "whileDestroyed": {
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "ability",
        +            "description",
        +            "timings"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 200,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "draft"
        +    ],
        +    "type": "object"
        +  }
        +]
  6. 1 tool update
    • Changedcreate_battle1 field changed
      • addedInput schema / properties / fixture
        Added value: +{
        +  "maxLength": 300,
        +  "type": "string"
        +}
  7. 2 tool updates
    • Changedget_reference1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"The stable result id returned by search_reference."New value: +"A reference id such as datasheet:necrons:necron-warriors: a result id from search_reference, a mission pack id from list_reference, or a referenceId from list_units or simulate_combat. Names, URLs, and unit ids are not reference ids."
    • Changedget_reference_record1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"The stable id returned by search_reference or list_reference."New value: +"A reference id such as datasheet:necrons:necron-warriors: a result id from search_reference, a mission pack id from list_reference, or a referenceId from list_units or simulate_combat. Names, URLs, and unit ids are not reference ids."
  8. 4 tool updates
    • Changedget_reference2 fields changed
      • changedOutput schema / properties / sections / items / properties / textSources / description
        Previous value: -"Where withheld rules text lives upstream; fetch it there if you need the wording."New value: +"Where withheld rules text lives upstream: the pinned file, its source, and the id of the record holding it there when the file has one. Fetch it there if you need the wording."
      • addedOutput schema / properties / sections / items / properties / textSources / items / properties / url / format
        Added value: +"uri"
    • Changedget_reference_record2 fields changed
      • changedOutput schema / properties / document / properties / sections / items / properties / textSources / description
        Previous value: -"Where withheld rules text lives upstream; fetch it there if you need the wording."New value: +"Where withheld rules text lives upstream: the pinned file, its source, and the id of the record holding it there when the file has one. Fetch it there if you need the wording."
      • addedOutput schema / properties / document / properties / sections / items / properties / textSources / items / properties / url / format
        Added value: +"uri"
    • Changedlist_units1 field changed
      • changedOutput schema / properties / units / items / properties / limit / anyOf
        Previous value: -[
        -  {
        -    "maximum": 9007199254740991,
        -    "minimum": -9007199254740991,
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsearch_reference4 fields changed
      • addedOutput schema / properties / results / items / properties / excerpt / maxLength
        Added value: +322
      • addedOutput schema / properties / results / items / properties / section / properties / textSources / description
        Added value: +"Where withheld rules text lives upstream: the pinned file, its source, and the id of the record holding it there when the file has one. Fetch it there if you need the wording."
      • addedOutput schema / properties / results / items / properties / section / properties / textSources / items / properties / url / format
        Added value: +"uri"
      • addedOutput schema / properties / results / maxItems
        Added value: +25
  9. 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": {
        -          "clubId": {
        -            "anyOf": [
        -              {
        -                "maxLength": 64,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "kind": {
        -            "const": "set-battle-club",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "clubId"
        -        ],
        -        "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"
        -          },
        -          "warlords": {
        -            "items": {
        -              "properties": {
        -                "playerId": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "side": {
        -                  "maximum": 1,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "side",
        -                "playerId"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "type": "array"
        -          }
        -        },
        -        "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": "set-side-warlord",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "playerId"
        -        ],
        -        "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"
        -                        },
        -                        "embarkedIn": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "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"
        -                  },
        -                  "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"
        -                        },
        -                        "embarkedSpace": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 1000,
        -                          "type": "integer"
        -                        },
        -                        "embarksWithBodyguard": {
        -                          "type": "boolean"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                        },
        -                        "startsEmbarkedIn": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "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",
        -                        "warlord",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 9,
        -                    "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": 200,
        -                "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"
        -                },
        -                "embarkedIn": {
        -                  "maximum": 99,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "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"
        -          },
        -          "pointsBudget": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 500,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "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": 200,
        -                    "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",
        -                "warlord",
        -                "kotc-infantry",
        -                "kotc-warlord",
        -                "kotc-epic-heroes",
        -                "kotc-toughness",
        -                "kotc-datasheet-copies"
        -              ],
        -              "type": "string"
        -            },
        -            "maxItems": 9,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "name",
        -          "catalogueId",
        -          "detachmentIds",
        -          "disposition",
        -          "limit",
        -          "picks",
        -          "prep"
        -        ],
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "attach-draft-roster",
        -        "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"
        -            },
        -            "whileDestroyed": {
        -              "type": "boolean"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "ability",
        -            "description",
        -            "timings"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 200,
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "draft"
        -    ],
        -    "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": {
        +          "armyPoints": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "maximum": 10000,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "maxItems": 2,
        +                "minItems": 2,
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "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": {
        +          "clubId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "set-battle-club",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "clubId"
        +        ],
        +        "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"
        +          },
        +          "warlords": {
        +            "items": {
        +              "properties": {
        +                "playerId": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "playerId"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          }
        +        },
        +        "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": "set-side-warlord",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "playerId"
        +        ],
        +        "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"
        +                        },
        +                        "embarkedIn": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "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"
        +                  },
        +                  "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"
        +                        },
        +                        "embarkedSpace": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 1000,
        +                          "type": "integer"
        +                        },
        +                        "embarksWithBodyguard": {
        +                          "type": "boolean"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                        },
        +                        "startsEmbarkedIn": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "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",
        +                        "warlord",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 9,
        +                    "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": 200,
        +                "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"
        +                },
        +                "embarkedIn": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "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"
        +          },
        +          "pointsBudget": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 500,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "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": 200,
        +                    "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",
        +                "warlord",
        +                "kotc-infantry",
        +                "kotc-warlord",
        +                "kotc-epic-heroes",
        +                "kotc-toughness",
        +                "kotc-datasheet-copies"
        +              ],
        +              "type": "string"
        +            },
        +            "maxItems": 9,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "catalogueId",
        +          "detachmentIds",
        +          "disposition",
        +          "limit",
        +          "picks",
        +          "prep"
        +        ],
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "attach-draft-roster",
        +        "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"
        +            },
        +            "whileDestroyed": {
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "ability",
        +            "description",
        +            "timings"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 200,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "draft"
        +    ],
        +    "type": "object"
        +  }
        +]
  10. 2 tool updates
    • Changedcreate_battle1 field changed
      • addedInput schema / properties / clubToken
        Added value: +{
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • 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"
        -          },
        -          "warlords": {
        -            "items": {
        -              "properties": {
        -                "playerId": {
        -                  "maxLength": 64,
        -                  "minLength": 1,
        -                  "type": "string"
        -                },
        -                "side": {
        -                  "maximum": 1,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "side",
        -                "playerId"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 2,
        -            "type": "array"
        -          }
        -        },
        -        "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": "set-side-warlord",
        -            "type": "string"
        -          },
        -          "playerId": {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "side": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "kind",
        -          "side",
        -          "playerId"
        -        ],
        -        "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"
        -                        },
        -                        "embarkedIn": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "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"
        -                  },
        -                  "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"
        -                        },
        -                        "embarkedSpace": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 1000,
        -                          "type": "integer"
        -                        },
        -                        "embarksWithBodyguard": {
        -                          "type": "boolean"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                        },
        -                        "startsEmbarkedIn": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "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",
        -                        "warlord",
        -                        "kotc-infantry",
        -                        "kotc-warlord",
        -                        "kotc-epic-heroes",
        -                        "kotc-toughness",
        -                        "kotc-datasheet-copies"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "maxItems": 9,
        -                    "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": 200,
        -                "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"
        -                },
        -                "embarkedIn": {
        -                  "maximum": 99,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "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"
        -          },
        -          "pointsBudget": {
        -            "anyOf": [
        -              {
        -                "maximum": 10000,
        -                "minimum": 500,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "prep": {
        -            "anyOf": [
        -              {
        -                "properties": {
        -                  "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": 200,
        -                    "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",
        -                "warlord",
        -                "kotc-infantry",
        -                "kotc-warlord",
        -                "kotc-epic-heroes",
        -                "kotc-toughness",
        -                "kotc-datasheet-copies"
        -              ],
        -              "type": "string"
        -            },
        -            "maxItems": 9,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "name",
        -          "catalogueId",
        -          "detachmentIds",
        -          "disposition",
        -          "limit",
        -          "picks",
        -          "prep"
        -        ],
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "attach-draft-roster",
        -        "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"
        -            },
        -            "whileDestroyed": {
        -              "type": "boolean"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "ability",
        -            "description",
        -            "timings"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 200,
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "draft"
        -    ],
        -    "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": {
        +          "clubId": {
        +            "anyOf": [
        +              {
        +                "maxLength": 64,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "set-battle-club",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "clubId"
        +        ],
        +        "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"
        +          },
        +          "warlords": {
        +            "items": {
        +              "properties": {
        +                "playerId": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "playerId"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          }
        +        },
        +        "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": "set-side-warlord",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "playerId"
        +        ],
        +        "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"
        +                        },
        +                        "embarkedIn": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "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"
        +                  },
        +                  "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"
        +                        },
        +                        "embarkedSpace": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 1000,
        +                          "type": "integer"
        +                        },
        +                        "embarksWithBodyguard": {
        +                          "type": "boolean"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                        },
        +                        "startsEmbarkedIn": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "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",
        +                        "warlord",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 9,
        +                    "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": 200,
        +                "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"
        +                },
        +                "embarkedIn": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "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"
        +          },
        +          "pointsBudget": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 500,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "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": 200,
        +                    "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",
        +                "warlord",
        +                "kotc-infantry",
        +                "kotc-warlord",
        +                "kotc-epic-heroes",
        +                "kotc-toughness",
        +                "kotc-datasheet-copies"
        +              ],
        +              "type": "string"
        +            },
        +            "maxItems": 9,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "catalogueId",
        +          "detachmentIds",
        +          "disposition",
        +          "limit",
        +          "picks",
        +          "prep"
        +        ],
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "attach-draft-roster",
        +        "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"
        +            },
        +            "whileDestroyed": {
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "ability",
        +            "description",
        +            "timings"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 200,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "draft"
        +    ],
        +    "type": "object"
        +  }
        +]
  11. 2 tool updates
    • Changedsave_roster3 fields 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": {
        -                      "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": {
        +        "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": 200,
        +        "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"
        +  }
        +]
      • changedInput schema / properties / waivedRules / items / enum
        Previous value: -[
        -  "points-limit",
        -  "detachments",
        -  "detachment-points",
        -  "kotc-infantry",
        -  "kotc-warlord",
        -  "kotc-epic-heroes",
        -  "kotc-toughness",
        -  "kotc-datasheet-copies"
        -]New value: +[
        +  "points-limit",
        +  "detachments",
        +  "detachment-points",
        +  "warlord",
        +  "kotc-infantry",
        +  "kotc-warlord",
        +  "kotc-epic-heroes",
        +  "kotc-toughness",
        +  "kotc-datasheet-copies"
        +]
      • changedInput schema / properties / waivedRules / maxItems
        Previous value: -8New value: +9
    • 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"
        -                        },
        -                        "embarkedIn": {
        -                          "maximum": 99,
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "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"
        -                  },
        -                  "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"
        -                        },
        -                        "embarkedSpace": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 1000,
        -                          "type": "integer"
        -                        },
        -                        "embarksWithBodyguard": {
        -                          "type": "boolean"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                        },
        -                        "startsEmbarkedIn": {
        -                          "maxLength": 64,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "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"
        -                },
        -                "embarkedIn": {
        -                  "maximum": 99,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                },
        -                "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"
        -          },
        -          "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"
        -  }
        -]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"
        +          },
        +          "warlords": {
        +            "items": {
        +              "properties": {
        +                "playerId": {
        +                  "maxLength": 64,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "side": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "side",
        +                "playerId"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 2,
        +            "type": "array"
        +          }
        +        },
        +        "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": "set-side-warlord",
        +            "type": "string"
        +          },
        +          "playerId": {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "side": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "side",
        +          "playerId"
        +        ],
        +        "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"
        +                        },
        +                        "embarkedIn": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "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"
        +                  },
        +                  "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"
        +                        },
        +                        "embarkedSpace": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 1000,
        +                          "type": "integer"
        +                        },
        +                        "embarksWithBodyguard": {
        +                          "type": "boolean"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                        },
        +                        "startsEmbarkedIn": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "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",
        +                        "warlord",
        +                        "kotc-infantry",
        +                        "kotc-warlord",
        +                        "kotc-epic-heroes",
        +                        "kotc-toughness",
        +                        "kotc-datasheet-copies"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    "maxItems": 9,
        +                    "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": 200,
        +                "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"
        +                },
        +                "embarkedIn": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "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"
        +          },
        +          "pointsBudget": {
        +            "anyOf": [
        +              {
        +                "maximum": 10000,
        +                "minimum": 500,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "prep": {
        +            "anyOf": [
        +              {
        +                "properties": {
        +                  "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": 200,
        +                    "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",
        +                "warlord",
        +                "kotc-infantry",
        +                "kotc-warlord",
        +                "kotc-epic-heroes",
        +                "kotc-toughness",
        +                "kotc-datasheet-copies"
        +              ],
        +              "type": "string"
        +            },
        +            "maxItems": 9,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "catalogueId",
        +          "detachmentIds",
        +          "disposition",
        +          "limit",
        +          "picks",
        +          "prep"
        +        ],
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "attach-draft-roster",
        +        "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"
        +            },
        +            "whileDestroyed": {
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "ability",
        +            "description",
        +            "timings"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 200,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "draft"
        +    ],
        +    "type": "object"
        +  }
        +]
  12. 2 tool updates
    • Changedsave_roster1 field changed
      • addedInput schema / properties / picks / items / properties / embarkedIn
        Added value: +{
        +  "maximum": 99,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • 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"
        -                        },
        -                        "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"
        -                  },
        -                  "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"
        -                        },
        -                        "embarkedSpace": {
        -                          "exclusiveMinimum": 0,
        -                          "maximum": 1000,
        -                          "type": "integer"
        -                        },
        -                        "embarksWithBodyguard": {
        -                          "type": "boolean"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                },
        -                "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"
        -          },
        -          "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"
        -  }
        -]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"
        +                        },
        +                        "embarkedIn": {
        +                          "maximum": 99,
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "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"
        +                  },
        +                  "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"
        +                        },
        +                        "embarkedSpace": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 1000,
        +                          "type": "integer"
        +                        },
        +                        "embarksWithBodyguard": {
        +                          "type": "boolean"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                        },
        +                        "startsEmbarkedIn": {
        +                          "maxLength": 64,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "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"
        +                },
        +                "embarkedIn": {
        +                  "maximum": 99,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "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"
        +          },
        +          "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"
        +  }
        +]
  13. 2 tool updates
    • Changedsimulate_combat2 fields changed
      • changedInput schema / properties / attacker / properties / attached / description
        Previous value: -"Leaders or support units joined to the unit, from its canBeLedBy and canBeSupportedBy."New value: +"Leaders or support units joined to the unit, from its canBeLedBy and canBeSupportedBy. A unit that joins one of these instead, such as Nork Deddog joining a Cadian Command Squad, goes after it."
      • changedInput schema / properties / defender / properties / attached / description
        Previous value: -"Leaders or support units joined to the unit, from its canBeLedBy and canBeSupportedBy."New value: +"Leaders or support units joined to the unit, from its canBeLedBy and canBeSupportedBy. A unit that joins one of these instead, such as Nork Deddog joining a Cadian Command Squad, goes after it."
    • 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"
        -                        },
        -                        "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"
        -                  },
        -                  "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"
        -                        },
        -                        "embarksWithBodyguard": {
        -                          "type": "boolean"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                },
        -                "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"
        -          },
        -          "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"
        -  }
        -]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"
        +                        },
        +                        "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"
        +                  },
        +                  "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"
        +                        },
        +                        "embarkedSpace": {
        +                          "exclusiveMinimum": 0,
        +                          "maximum": 1000,
        +                          "type": "integer"
        +                        },
        +                        "embarksWithBodyguard": {
        +                          "type": "boolean"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                },
        +                "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"
        +          },
        +          "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"
        +  }
        +]
  14. 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": [
        -                      "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"
        -                        },
        -                        "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"
        -                  },
        -                  "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"
        -                        },
        -                        "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"
        -                        },
        -                        "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"
        -                },
        -                "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"
        -          },
        -          "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"
        -  }
        -]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"
        +                        },
        +                        "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"
        +                  },
        +                  "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"
        +                        },
        +                        "embarksWithBodyguard": {
        +                          "type": "boolean"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                },
        +                "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"
        +          },
        +          "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"
        +  }
        +]
  15. 2 tool updates
    • Changedsave_roster1 field changed
      • addedInput schema / properties / picks / items / properties / nickname
        Added value: +{
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • 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"
        -  },
        -  {
        -    "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"
        -  }
        -]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"
        +                        },
        +                        "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"
        +                  },
        +                  "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"
        +                        },
        +                        "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"
        +                        },
        +                        "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"
        +                },
        +                "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"
        +          },
        +          "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"
        +  }
        +]
  16. 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"
        +  }
        +]
  17. 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"
        +  }
        +]

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources