Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Purple requires i18n., gray are for backwards compatibility.

RuleSection

07 Physical Fouls

Property

Type

Description

id

uuid

seasonId

id

2024-25

officeId

id

Hockey Canada

name

string

Physical Fouls

code

text

7

order

number

...

Display sort order

Rule

7.6 Head Contact

Property

Type

Description

id

uuid

seasonId

id

2024-25

officeId

id

Hockey Canada

name

string

Head Contact

code

string

7.6

sectionId

id

Physical Fouls

order

number

Display sort order

RuleOption

This is a container that represents the options the scorekeeper can select.

...

Property

Type

Description

id

uuid

seasonId

id

2024-25

officeId

id

Hockey Canada

ruleId

id

7.6 Head Contact (07 Physical Fouls)

name

string

Display name

description

string

Optional text to help describe the scenario this option is used for

parentId

id

Allows overriding a parent option by a lower office

order

number

Display sort order

RuleOptionMember

These are the effective infractions upon selecting the option. Order is significant and allows for sequencing penalties as consecutive (e.g., major = 0, GM = 1) or parallel (same order) for start times

Property

Type

Description

id

uuid

optionId

id

infractionId

id

7.6 (b)

No unique constraint to allow for double minors

order

number

Serving order

Infraction Models

When creating a penalty, you’re presented with a list of rules and then select an option. That option then results in one or many penalties that are linked to an infraction.

InfractionType

Minor, Major, Match, Misconduct, Game Misconduct, Gross Misconduct, Game Ejection

Property

Type

Description

id

uuid

officeId

id

Hockey Canada

name

string

Minor

description

string

abbreviation

string

duration

number

Total time for stats

servedBy

string

Determines if the penalty has endTime & servedById

None | Offender | Player

isShorthanded

boolean

Determines if the penalty may be cancelled out with coincidental penalties of same type

isEjection

boolean

Penalty results in player being ejected for remainder of game

Type

servingOrder

Characteristics

Minutes

Server

Who serves on bench

Shorthanded

May be canceled if coincidental

Removed

Player is removed from game

Hockey

Minor

  • 2 minute penalty, timed

  • Player serves on bench, team shorthanded

2

Offender

Yes

No

Major

  • 5 minute penalty, timed

  • Immediate removal (from GM)

  • Another player

    number

    When multiple infractions are selected at one start time, helps stagger the times. Order is major/minor/misconduct.

    Optional. If not specified, will be ordered after any ordered infractions

    Characteristics

    • Duration indicates that there’s an end time, unless there’s also a removal and not shorthanded.

    • Can determine if someone else should be serving if any penalty in the option has an ejection

    • If a major/minor/misconduct are called at the same game time, the start time will be staggered

    Yes

    Type

    Characteristics

    Minutes

    Shorthanded

    Team is shorthanded

    Removed

    Player is removed from game

    Serving Order

    Hockey

    Minor

    • 2 minute penalty, timed

    • Player serves on bench, team shorthanded

    52Player

    Yes

    Offender

    No

    Misconduct

    10 minutes, non-

    2

    Bench Minor

    Offender
    • 2 minute penalty, timed

    • Player serves on bench

    • Immediate substitution

    10

    • , team shorthanded

    • Not counted towards stats as offender is not identified

    2

    Yes
    Player

    NoNo

    2

    Game Misconduct

    10 minutes, non-

    Major

    None
    • 5 minute penalty, timed

    • Immediate removal

    • Immediate substitution

    10

    • (from GM)

    • Another player serves on bench, team shorthanded

    5

    Yes
    Player (due to GM)

    No

    Yes

    Game Ejection

    Identical to Game Misconduct

    10

    None1

    Misconduct

    • 10 minutes, non-timed

    • Player serves on bench

    • Immediate substitution

    10

    No
    Offender (duration)

    No

    3

    Game Misconduct

    • 10 minutes, non-timed

    • Immediate removal

    • Immediate substitution

    10

    No

    Yes

    Game Ejection

    • 10 minutes, non-timed

    • Immediate removal

    • Immediate substitution

    10

    No

    Yes

    Gross Misconduct

    • 10 minutes, non-timed

    • Immediate removal

    • Immediate substitution

    10None

    No

    Yes

    Match

    • 5 minutes, timed

    • Immediate removal

    • Another player serves on bench, team shorthanded

    5

    Yes
    Player

    Yes

    Yes

    Penalty Shot

    • 0 minutes, non-timed

    • No removal, not served

    0

    None

    No

    No

    Soccer

    Caution

    • Yellow card

    0

    None

    No

    No

    Expulsion

    • 2nd Yellow Card

    • Red Card

    0None

    No

    Yes

    Baseball

    Ejection

    • All penalties

    0None

    No

    Yes

    Infraction

    7.6(b) - Head Contact - Minor

    Low | Medium | High | Severe

    Property

    Type

    Description

    id

    uuid

    seasonId

    id

    2024-25

    officeId

    id

    Hockey Canada

    ruleId

    id

    7.6 Head Contact

    typeId

    id

    Minor

    code

    string

    7.6 (b)

    severity

    enum

    Low | Medium | High | Severe

    order

    number

    Display sort order

    parentId

    id

    Allows overriding a parent infraction by a lower office

    externalId

    uuid

    For syncing with Spordle ID

    legacyName

    string

    Used to set infraction on GamePenalty for limited backwards compatibility

    legacyDuration

    string

    Used to set duration on GamePenalty for limited backwards compatibility

    Behaviour Options

    severity

    enum

    requiresIncidentReport

    boolean

    Accumulation Models

    When creating a penalty, we need to check for accumulation rules to stack an additional infraction.

    Typical examples are 3x Stick Infraction → Game Ejection or 2x Misconduct → Game Ejection.

    InfractionAccumulation

    This acts as a grouping that defines the count of the member infractions necessary and what the resulting infraction is.

    Property

    Type

    Description

    id

    uuid

    seasonId

    id

    2023-24

    officeId

    id

    Hockey Canada

    name

    string

    Stick Infractions

    count

    number

    3

    infractionId

    id

    Resulting infraction when accumulation reached

    4.8 (b)

    isReplacement

    boolean

    Whether the accumulation acts as a replacement infraction or not

    e.g., 2nd yellow → Yellow/Red Card

    InfractionAccumulationMember

    These are the list of infractions that are part of the accumulation group. Order is not significant; any member infraction counts towards the accumulation group.

    ...

    Yellow are new properties, red are deprecated.

    GamePenalty

    Instances of an infraction in a game are called penalties. This is a scoresheet artifact.

    Property

    Type

    Description

    id

    uuid

    gameId

    id

    teamId

    id

    participantId

    id

    servedById

    id

    isInjured

    boolean

    Necessary for suspensions

    Time

    gameTime

    GameTime

    Time of infraction

    startTime

    GameTime

    Time the penalty started to be served

    endTime

    GameTime

    Time the penalty ceased to be served

    isEnded

    boolean

    Whether or not the penalty was ended

    Infraction

    infractionId

    id

    optionId

    id

    Link penalties part of the same option group when creating instead of trying to reverse them as we currently do

    accumulationId

    id

    Link penalties that were created by an accumulation rule

    Legacy infraction options (deprecated)

    infraction

    string

    Infraction “id” which is something like “head-contact” in the rulebook

    duration

    string

    Duration “id” which is something like “minor” in the rulebook

    code

    string

    Infraction “code”

    Penalties are consisted linked if they have the same participantId, gameTime and optionId or have an accumulationId that matches.

    ...

    The /meta API should return all applicable infraction, infraction option and accumulation entities.

    ...

    Administration

    A new Rulebook office tab will be added that will show rules, infractions, options and accumulations as individual cards. Each card would have a filter to show effective offices, but editing is disabled if the office doesn’t match.

    ...

    • types

    • sections

    • rules

    • infractions

    • options

      • members

    • accumulations

      • members

    • lineupLimits

    • pitcherLimits

    • variances/ pitcherLimits

    Penalty Management

    Legend for the examples given below
    A being a match penalty (from the rule option)
    B being a game misconduct penalty (from the rule option)
    C being a game ejection (from accumulation rule)

    Linked Penalties: Bundle of penalties created off of a rule option. This includes accumulation penalties caused by the rule option (from an accumulation rule).
    Ex. rule option resulted in A, B, C → A, B, C would get returned)

    First Linked Penalty: First penalty in the linked penalties.
    Ex. a rule option resulted in A, B, C
    passing the penalty A → A would get returned
    passing C → A would get returned)

    Subsequent Linked Penalties: Penalties after the first one in the linked penalties.
    Ex. a rule option resulted in A, B, C
    passing penalty A → B, C would get returned
    passing penalty C → B, C would get returned

    Adding a penalty

    Pick a rule option → Results in a bundle of linked penalties (an accumulation infraction might get added if an accumulation rule is fulfilled)

    Editing a penalty

    First penalty in the linked penalties → Fully editable (can change rule option, participant, start time, off time) and deletable.

    • Changing the rule option will remove all linked penalties and create the new penalties based off of the new rule option.

    • Changing the participant / start time / off time will change for all the linked penalties

    • Deleting the penalty will automatically delete subsequent penalties (this includes the accumulation penalties)

    Subsequent penalties in the linked penalties → Partially editable (can change only the start time) and deletable.

    • Changing the start time will not affect the other penalties

    • Deleting any of the subsequent penalty that isn’t an accumulation will automatically delete subsequent penalties (this includes the accumulation penalties)

      • Deleting an accumulation penalty will always only delete the one penalty