# People - Sportive officials

# Disciplines

Discipline code Discipline FR Discipline NL
CA Attelage Mennen
CC Complet Eventing
CD Dressage Dressuur
CE Endurance Endurance
CH Horseball Horseball
CP Para-equestrian Para-equestrian
CR Reining Reining
CS Sauts Obstacle Jumping
CT TREC TREC
CTE Tourisme Equestre Hippisch Toerisme
CV Voltige Voltige

# Types

Type code Type FR Type NL
CDD Course Director Course Designer Course Director Course Designer
CDJ Juge Directeur de Course Course Director Judge
CDS Course Director Stewarding Course Director Stewarding
CDT Course Director Technical Delegate Course Director Technical Delegate
IOV FEI Official Veterinarian FEI Official Veterinarian
IPTV FEI Permitted Treating Veterinarian FEI Permitted Treating Veterinarian
ITT FEI Testing Technician FEI Testing Technician
J Juge Jury
P Constructeur de pistes Piste bouwer
S Steward Steward
T Délégué technique Technisch afgevaardigde
V Vétérinaire Dierenarts

# Events

--- SPORTIVE_OFFICIAL_CREATED ---
{
 "event": "SPORTIVE_OFFICIAL_CREATED",
 "data": {
     "sportive_official_id": 123,
     "person_id": 999,
 }
}
--- SPORTIVE_OFFICIAL_UPDATED ---
{
 "event": "SPORTIVE_OFFICIAL_UPDATED",
 "data": {
     "sportive_official_id": 123,
     "person_id": 999,
 }
}
--- SPORTIVE_OFFICIAL_DELETED ---
{
 "event": "SPORTIVE_OFFICIAL_DELETED",
 "data": {
     "sportive_official_id": 123,
     "person_id": 999,
 }
}

# Validation

{
    "discipline": [
        "required",
        "An existing discipline",
    ],
    "type": [
        "required",
        "An existing official type",
    ],
    "level": [
        "required",
        "An existing official level",
        "IN: 'A', 'CF', 'CI', 'CJ', 'CN', 'CN1', 'CN2', 'CN3', 'CS', 'F', 'H'",
        "OR: 'I', 'I1', 'I2', 'I3', 'I4', 'I5', 'IH', 'Inact', 'IO', 'ISG', 'ISG I3'",
        "OR: 'N', 'N1', 'N1C', 'N2', 'N2C', 'N3', 'N3C', 'N4', 'N5', 'N6', 'N7', 'N8', 'NC1', 'NH'",
        "OR: 'J', 'JJ', 'JS', 'S', 'SA', 'YH'"
    ],
    "from": [
        "required",
        "date",
        "before:until",
    ],
    "until": [
        "nullable",
        "date",
        "after:from",
    ],
    "remarks": [
        "nullable",
    ]
}

# List

--- ENDPOINT ---

Domain: equidata 
Url: /people/123/sportive-official
Method: GET

--- EXAMPLE RESPONSE ---
[
    {
        "id": 3,
        "discipline": "CT",
        "type": "CDJ",
        "level": "I",
        "from": "2004-12-25",
        "until": "2022-08-10",
        "remarks": "Some remarks"
    },
    // other sportive official entities
]

# Show

--- ENDPOINT ---

Domain: equidata 
Url: /people/123/sportive-official/3
Method: GET

--- EXAMPLE RESPONSE ---
{
    "id": 3,
    "discipline": "CT",
    "type": "CDJ",
    "level": "I",
    "from": "2004-12-25",
    "until": "2022-08-10",
    "remarks": "Some remarks"
}

# Create

--- ENDPOINT ---

Domain: equidata 
Url: /people/123/sportive-official
Method: POST

--- EXAMPLE PAYLOAD ---
{
    "discipline": "CT",
    "type": "CDJ",
    "level": "I",
    "from": "2004-12-25",
    "until": "2022-08-10",
    "remarks": "Some remarks"
}
--- EXAMPLE RESPONSE ---
{
    "id": 3,
    "discipline": "CT",
    "type": "CDJ",
    "level": "I",
    "from": "2004-12-25",
    "until": "2022-08-10",
    "remarks": "Some remarks"
}

# Update

--- ENDPOINT ---

Domain: equidata 
Url: /people/123/sportive-official/3
Method: PUT

--- EXAMPLE PAYLOAD ---
{
    "discipline": "CT",
    "type": "CDJ",
    "level": "I",
    "from": "2004-12-25",
    "until": "2022-08-10",
    "remarks": "Some remarks"
}
--- EXAMPLE RESPONSE ---
{
    "id": 3,
    "discipline": "CT",
    "type": "CDJ",
    "level": "I",
    "from": "2004-12-25",
    "until": "2022-08-10",
    "remarks": "Some remarks"
}

# Delete

--- ENDPOINT ---

Domain: equidata 
Url: /people/123/sportive-official/3
Method: DELETE

--- EXAMPLE RESPONSE ---
// empty, simply a HTTP 200 status code