# People - Official Exams

# 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

--- EXAM_SPORTIVE_OFFICIAL_CREATED ---
{
    "event": "EXAM_SPORTIVE_OFFICIAL_CREATED",
    "data": {
        "exam_id": 53,
        "person_id": 1,
    }
}
--- EXAM_SPORTIVE_OFFICIAL_DELETED ---
{
    "event": "EXAM_SPORTIVE_OFFICIAL_DELETED",
    "data": {
        "exam_id": 53,
        "person_id": 1,
    }
}
--- EXAM_SPORTIVE_OFFICIAL_UPDATED ---
{
    "event": "EXAM_SPORTIVE_OFFICIAL_UPDATED",
    "data": {
        "exam_id": 53,
        "person_id": 1,
    }
}

# Validation

{
  "discipline": [
    "required",
    "An existing discipline code"
  ],
  "type": [
    "required",
    "An existing type code"
  ],
  "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"
  ],
  "until_status": [
    "required",
    "in: absent, success, failure"
  ],
  "remarks": [
    "nullable",
  ]
}

# List

--- ENDPOINT ---

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

--- EXAMPLE RESPONSE ---
[
    {
        "id": 51,
        "discipline": "CS",
        "type": "V",
        "level": "IH",
        "from": "2020-02-14",
        "until_status": "absent",
        "remarks": "Interesting remark"
    }
    // ...other official exams
]

# Show

--- ENDPOINT ---

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

--- EXAMPLE RESPONSE ---
{
    "id": 51,
    "discipline": "CS",
    "type": "V",
    "level": "IH",
    "from": "2020-02-14",
    "until_status": "absent",
    "remarks": "Interesting remark"
}

# Create

--- ENDPOINT ---

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

--- EXAMPLE PAYLOAD ---
{
    "discipline": "CS",
    "type": "V",
    "level": "IH",
    "from": "2020-02-14",
    "until_status": "absent",
    "remarks": "Interesting remark"
}
--- EXAMPLE RESPONSE ---
{
    "id": 51,
    "discipline": "CS",
    "type": "V",
    "level": "IH",
    "from": "2020-02-14",
    "until_status": "absent",
    "remarks": "Interesting remark"
}

# Update

--- ENDPOINT ---

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

--- EXAMPLE PAYLOAD ---
{
    "discipline": "CS",
    "type": "V",
    "level": "IH",
    "from": "2020-02-14",
    "until_status": "absent",
    "remarks": "Interesting remark"
}
--- EXAMPLE RESPONSE ---
{
    "id": 51,
    "discipline": "CS",
    "type": "V",
    "level": "IH",
    "from": "2020-02-14",
    "until_status": "absent",
    "remarks": "Interesting remark"
}

# Delete

--- ENDPOINT ---

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

--- EXAMPLE RESPONSE ---
{
 "data": []
}