Introduction
Do you want to link your website to your equicty - equstable account? Do you want to save time by having your horses information stored in equicty shared with your website in one click? Not only horse profile information such as age, pedigree, color, horse height, etc., but also your photos,videos can be made available on your website in real time!
Therefore equicty has developed an Application Programming Interface called API to allow you to built an automated connection between your website and your equicty stable management account.
The benefits of this great feature;
- Save you tremendous time by avoiding you to duplicate information on your business website ! Once a horse is created in equicty it will appear in real-time on your business website
- Make sure your business website is always up-to-date without any effort ! Having your latest horses arrived at your stable, new upload of videos or photos on existing horses etc updated in in real time

What kind of information can be shared between equicty and your website ?
- Horse Identification information: Gender, Age, Date of Birth, Studbook, Colour, Horse Height 
- Horses pedigree: 3 generations 
- Horses pictures: Profile picture, miniature, and other pictures you have made public 
- Horses videos: videos you have made public 
  
How to get started with the integration ?
STEP 1: Upgrade your equicty account with the "Website API" add-on feature. Read more..
STEP 2: Share following information with your webmaster (your website developer)
- Your unique API key. After upgrading your account you can find this key on following location on your account; Settings > My Stable > API key
VERY IMPORTANT; Please handle the key very securely ! Keep it very secure !
- Technical API integration documentation you can find below in this document
STEP 3: Your webmaster can start accessing the required information from your equicty account
STEP 4: When your webmaster has done the job you can start configuring your equicty account!
Configure which horses you want to have synchronised with your website by activating the earth symbol  in the horse profile section.
 in the horse profile section.
Configure which photos or videos you want to share with your website by activating the earth symbol  in the Media module
 in the Media module
API Technical documentation (For the webmasters)
Authentication
 
Authenticate your account when using the API by including your secret API key in the request. The customer administrator can find the website API key under Settings -> My Stable -> Website API. 
Your API keys carry many privileges, so be sure to keep them secret! Do not share your secret API keys. 
Authentication to the API is performed via HTTP Basic Auth. Provide your API key as the basic auth username value. You do not need to provide a password.
Authenticate via bearer: headers in:                        
-                             - Authorization: Bearer {{website api key}} 
-                             - Accept-Language: EN/FR/DE/NL (default EN) All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail. 
Errors
Equicty uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in
 the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a charge failed, etc.), and codes in the 5xx range indicate an error with the servers of equicty (exceptional).
To understand why a request is declined, see status codes below. HTTP status code summary
200-OK
400 - Bad Request
401 - Unauthorized
500 - Server Errors
Everything worked as expected.
The request was unacceptable, often due to missing a required parameter.
No valid API key provided.
Something went wrong on the server.
Basic JSON frame returned from API:
When is error, data have to looks like this:
{
 “status” : false, 
“msg” : “what was wrong” }
When is ok, data have to: {
“data” : {
 //Other json data, arrays models etc
} }
Successful Request Failed Request
Demo example
http://demostable.equicty.com/
200 OK
400 Bad Request                                    
Request list of public horses
Description: Function return list of public horses
Route: https://portal.equicty.com/equicty/api/public/web/horses Method: POST
Params in:
gender: STALLION/MARE/GELDING (optional filter)
headers in:
Authorization: Bearer {{website api key}}
Accept-Language: EN/FR/DE/NL (default EN)
Params out:
[ 
{
"id": 1,
"name": "horse name example", "age": 5,
"birthday": "07-03-2012",
"sex": "Gelding",
"studbook": "BWP",
 "color": "Paint",
"height": 172, "heightunit": "cm" "horsetelex": false, "pedigree": {
"v": "father", "vv": "",
 "vvv": "", "vvm": "", "vm": "", "vmv": "", "vmm": "", "m": "Mother", "mv": "", "mvv": "", "mvm": "", "mm": "", "mmv": "", "mmm": ""
},
 "profile": "https://...jpg", "miniature": "https://...jpg
} ]
// Only for horses not synced to horesetelex
Request public horse details
Description: Function return details of a public horse
Route: https://portal.equicty.com/equicty/api/public/web/horses/{{horseid}} Method: GET
Params in:
headers in:
Authorization: Bearer {{website api key}}
Accept-Language: EN/FR/DE/NL (default EN)
Params out: 
{
"id": 1,
"name": "horse name example", "age": 5,
"birthday": "07-03-2012",
"sex": "Gelding",
"studbook": "BWP",
 "color": "Paint",
"height": 172, "heightunit": "cm", "horsetelex": false, "pedigree": {
"v": "father", "vv": "",
 "vvv": "", "vvm": "", "vm": "", "vmv": "", "vmm": "", "m": "Mother", "mv": "", "mvv": "", "mvm": "", "mm": "", "mmv": "", "mmm": ""
},
 "profile": "https://...jpg", "miniature": "https://...jpg", "videos": [
// Only for horses not synced to horesetelex
{
"name": "",
"module": "",
"mediaurl": "https://www.youtube.com/watch?v=b8-KqYAWJ4M", "miniatureurl": "https://i.ytimg.com/vi/b8-KqYAWJ4M/hqdefault.jpg" 
} ],
"pictures": [ {
"name": "",
"module": "",
 "mediaurl": "https://...4.png", "miniatureurl": "https://....png"
} ]
}
Request HorseTelex pedigree
Description: Function returns the horestelex pedigree of a public horse. This is only available for horses where “horsetelex” attribute is true. This return the html output and it is possible to override the color scheme. Remark: do not add the # character to the color value, this is done in the api!
Route: https://portal.equicty.com/equicty/api/public/web/horses/pedigree/{{horseid}} Method: POST
Params in: 
{
: "ff0000", : "00ff00", : "0000ff"
}
headers in:
 Authorization: Bearer {{website api key}} Accept-Language: EN/FR/DE/NL (default EN) Params out: 
Html representation of the pedigree.
Logo integrated in the html output must be visible and may not be removed!
EQUICTY SAAS AGREEMENT article 4.3
“Customer agrees that, with any use of the SAASservice, the name, trademark and logo of EQUICTY and/or its suppliers (such as e.g. the HorseTelex database) shall be clearly visible and that Customer shall refrain from altering or removing any such notices from the products and services. “
"horse_textcolor" "mare_bgcolor" "mare_textcolor"
Sample code
List of public horses
<?php
 // get list of public horses with filter gender
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://portal.equicty.com/equicty/api/public/web/horses", CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST",
 CURLOPT_POSTFIELDS => "{\n\t\"gender\": \"\"\n}", CURLOPT_HTTPHEADER => array(
"authorization: Bearer {{ website api key }}", "cache-control: no-cache",
 "content-type: application/json
), ));
$response = curl_exec($curl); $err = curl_error($curl);
curl_close($curl);
if ($err) {
 echo "cURL Error #:" . $err;
} else {
 echo $response;
}
HorseTelex pedigree
<?php
 // get html output for the horstelex pedigree
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://portal.equicty.com/equicty/api/public/web/horses/pedigree/{{horse ID}}", CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
 CURLOPT_POSTFIELDS =>
"{\n\t\"horse_textcolor\":\"00AFA8\",\n\t\"mare_bgcolor\":\"efefef\",\n\t\"mare_textcolor\":\"000000\"\n}", CURLOPT_HTTPHEADER => array(
"authorization: Bearer {{ website api key }}", "cache-control: no-cache",
 "content-type: application/json”
), ));
$response = curl_exec($curl); $err = curl_error($curl);
curl_close($curl);
if ($err) {
 echo "cURL Error #:" . $err;
} else {
 echo $response;
}
Integration with Public API
openapi: "3.0.0"
info:
version: 1.0.0
title: Stable Management Public REST API v2
license:
name: MIT
servers:
- url: /equicty/api/
paths:
/public/web/horse:
post:
summary: Create a new horse
operationId: createHorse
tags:
- Horse
security:
- EquictyAuthenticationBearer: [ ]
requestBody:
description: create horse request
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpsertHorseRequest"
responses:
'200':
description: Horse details
content:
application/json:
schema:
$ref: '#/components/schemas/HorseDetails'
'400':
description: validation errors
content:
application/json:
schema:
oneOf:
- $ref: "#/components/responses/GenericErrorResponse"
- $ref: "#/components/responses/ValidationErrorResponse"
'401':
$ref: "#/components/responses/GenericErrorResponse"
'500':
$ref: "#/components/responses/GenericErrorResponse"
/public/web/horse/{horseId}:
put:
summary: Update an existing horse
operationId: editHorse
tags:
- Horse
security:
- EquictyAuthenticationBearer: [ ]
parameters:
- name: horseId
in: path
required: true
description: ID of the horse to update
schema:
type: integer
format: int32
requestBody:
description: edit horse request
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpsertHorseRequest"
responses:
'200':
description: Horse details
content:
application/json:
schema:
$ref: '#/components/schemas/HorseDetails'
'400':
description: validation errors
content:
application/json:
schema:
oneOf:
- $ref: "#/components/responses/GenericErrorResponse"
- $ref: "#/components/responses/ValidationErrorResponse"
'401':
$ref: "#/components/responses/GenericErrorResponse"
'500':
$ref: "#/components/responses/GenericErrorResponse"
/public/web/horses/{horse_id}:
get:
summary: Get single horse details
operationId: getHorseDetails
tags:
- Horse
security:
- EquictyAuthenticationBearer: [ ]
parameters:
- name: horse_id
in: path
required: true
description: ID of the horse to get details
schema:
type: integer
format: int32
- name: include_additional_info
in: query
required: false
schema:
type: boolean
default: false
description: if set to true - FullHorseDetails are returned, HorseDetailsWithMedia otherwise
responses:
'200':
description: Horse details
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/HorseDetailsWithMedia'
- $ref: '#/components/schemas/FullHorseDetails'
'400':
description: validation errors
content:
application/json:
schema:
oneOf:
- $ref: "#/components/responses/GenericErrorResponse"
- $ref: "#/components/responses/ValidationErrorResponse"
'401':
$ref: "#/components/responses/GenericErrorResponse"
'500':
$ref: "#/components/responses/GenericErrorResponse"
/public/web/horses/:
post:
summary: Get all horses
operationId: getAllHorses
tags:
- Horse
security:
- EquictyAuthenticationBearer: [ ]
parameters:
- name: include_additional_info
in: query
required: false
schema:
type: boolean
default: false
description: if set to true - FullHorseDetailsWithoutMedia are returned, HorseDetails otherwise
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
gender:
type: string
enum: [UNKNOWN, MARE, GELDING, STALLION, FILLY, COLT]
description: horse gender filter
responses:
'200':
description: Horse details
content:
application/json:
schema:
type: array
items:
oneOf:
- $ref: '#/components/schemas/HorseDetails'
- $ref: '#/components/schemas/FullHorseDetailsWithoutMedia'
'400':
description: validation errors
content:
application/json:
schema:
oneOf:
- $ref: "#/components/responses/GenericErrorResponse"
- $ref: "#/components/responses/ValidationErrorResponse"
'401':
$ref: "#/components/responses/GenericErrorResponse"
'500':
$ref: "#/components/responses/GenericErrorResponse"
components:
schemas:
UpsertHorseRequest:
type: object
required:
- name
- stableId
properties:
name:
type: string
nullable: false
sku:
type: string
nullable: true
minLength: 1
maxLength: 30
registration_number:
type: string
nullable: false
location:
type: string
nullable: true
birth_date:
type: string
example: "20-03-2024"
nullable: true
HorseDetails:
type: object
properties:
id:
type: string
name:
type: string
official_name:
type: string
nick_name:
type: string
age:
type: integer
format: int32
birth_date:
type: string
example: "20-03-2024"
sex:
type: string
studbook:
type: string
color:
type: string
height:
type: integer
format: int32
heightunit:
type: string
breeder:
type: string
pedigree:
type: string
nullable: true
horsetelex:
type: boolean
description: flag indicating if the horse is synced with horsetelex
profile:
type: string
description: horse's profile picture url
miniature:
type: string
description: horse's miniature picture url
HorseMediaDetails:
type: object
properties:
level:
type: string
info:
type: string
videos:
type: array
items:
$ref: '#/components/schemas/MediaDetails'
pictures:
type: array
items:
$ref: '#/components/schemas/MediaDetails'
AdditionalDetails:
type: object
properties:
level:
type: string
sku:
type: string
breeding_associations:
type: array
items:
type: string
semen_availability:
type: array
items:
type: string
wffs_test_result:
type: string
semen_price:
type: string
sales_content:
type: string
disciplines:
type: array
items:
type: string
FullHorseDetails:
allOf:
- $ref: '#/components/schemas/HorseDetails'
- $ref: '#/components/schemas/HorseMediaDetails'
- $ref: '#/components/schemas/AdditionalDetails'
HorseDetailsWithMedia:
allOf:
- $ref: '#/components/schemas/HorseDetails'
- $ref: '#/components/schemas/HorseMediaDetails'
FullHorseDetailsWithoutMedia:
allOf:
- $ref: '#/components/schemas/HorseDetails'
- $ref: '#/components/schemas/AdditionalDetails'
MediaDetails:
type: object
properties:
name:
type: string
module:
type: string
mediaurl:
type: string
description: url pointing to the media file
miniatureurl:
type: string
description: url pointing to the media file's miniature
responses:
GenericErrorResponse:
description: generic error
content:
application/json:
schema:
type: object
required:
- status
- msg
properties:
status:
type: boolean
msg:
type: string
ValidationErrorResponse:
description: validation errors
content:
application/json:
schema:
type: object
required:
- status
- msg
- errors
properties:
status:
type: integer
format: int32
msg:
type: string
errors:
type: array
items:
type: object
properties:
message:
type: string
fieldName:
type: string
field:
type: string
rejectedValue:
nullable: true
description: This value can be of any type, depending on the type of the field that failed validation
securitySchemes:
EquictyAuthenticationBearer:
type: http
scheme: bearer
Integration with NEW OPEN API EQUSTABLE 2.0
openapi: 3.0.0
info:
  version: 1.0.0
  title: Stable Management REST API v3
  license:
    name: MIT
servers:
  - url: /equicty/api
paths:
  /public/web/horses:
    post:
      summary: Get list of public horse details
      operationId: getPublicHorses
      tags:
        - clientPublic
      security:
        - EquictyAuthenticationBearer: []
      parameters:
        - in: query
          name: include_additional_info
          required: false
          schema:
            type: boolean
          description: 'if this is set to true, additional properties will be included in the response | level disciplines sku breeding_associations semen_availability wffs_test_result semen_price sales_content registration_number location active price_range shares'
      requestBody:
        description: Stable group details
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicStableHorsesReadRequest'
      responses:
        '200':
          description: list of public horse details
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PublicHorseModelSimple'
        default:
          $ref: '#/components/responses/GenericErrorResponse'
  '/public/web/horses/{horse_id}':
    get:
      summary: Get public horse details by horse id
      operationId: getPublicHorse
      tags:
        - clientPublic
      security:
        - EquictyAuthenticationBearer: []
      parameters:
        - in: path
          name: horse_id
          required: true
          schema:
            type: integer
            format: int32
        - in: query
          name: include_additional_info
          required: false
          schema:
            type: boolean
          description: 'if this is set to true, additional properties will be included in the response | disciplines sku breeding_associations semen_availability wffs_test_result semen_price sales_content registration_number location active price_range shares'
      responses:
        '200':
          description: horse details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicHorseModelDetailed'
        default:
          $ref: '#/components/responses/GenericErrorResponse'
  '/public/web/horses/pedigree/{horse_id}':
    post:
      summary: Get public horse's pedigree
      operationId: getPublicHorsePedigree
      tags:
        - clientPublic
      security:
        - EquictyAuthenticationBearer: []
      parameters:
        - in: path
          name: horse_id
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        description: page styling adjustments
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicHorsePedigreeHtmlPageRequest'
      responses:
        '200':
          description: horse pedigree HTML page
          content:
            application/xhtml+xml:
              schema:
                type: string
        default:
          $ref: '#/components/responses/GenericErrorResponse'
  /public/tasks/search:
    get:
      summary: Get list of tasks
      operationId: getTasksPublicApi
      tags:
        - clientPublic
      security:
        - EquictyAuthenticationBearer: []
      parameters:
        - in: query
          name: from
          description: The date from which to get tasks.
          required: true
          schema:
            type: string
            example: 28-12-3045
        - in: query
          name: to
          description: The date to which to get tasks.
          required: true
          schema:
            type: string
            example: 28-12-3045
        - in: query
          name: horseNames
          required: false
          description: List of horse names
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
        - in: query
          name: horseIds
          required: false
          description: List of horse IDs
          schema:
            type: array
            items:
              type: integer
              format: int32
          style: form
          explode: true
        - in: query
          name: taskTypes
          required: false
          description: Task type
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PublicApiTaskType'
          style: form
          explode: true
        - in: query
          name: taskName
          required: false
          description: Task name (action name)
          schema:
            type: string
        - in: query
          name: executed
          required: false
          description: Indicates whether the task is done (executed) or not
          schema:
            type: boolean
        - in: query
          name: staffRoles
          required: false
          description: This property allows filter tasks by assigned staff roles
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PublicApiStaffType'
          style: form
          explode: true
      responses:
        '200':
          description: list of tasks
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PublicTaskSimpleModel'
        default:
          $ref: '#/components/responses/GenericErrorResponse'
  /public/web/horse:
    post:
      summary: Create a new horse
      operationId: createHorse
      tags:
        - clientPublic
      security:
        - EquictyAuthenticationBearer: []
      requestBody:
        description: create horse request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertHorseRequest'
      responses:
        '200':
          description: Horse details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicHorseModelSimple'
        '400':
          description: validation errors
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SimpleResponseBody'
                  - $ref: '#/components/schemas/ValidationError'
        '401':
          description: authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleResponseBody'
        '500':
          description: internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleResponseBody'
  '/public/web/horse/{horseId}':
    put:
      summary: Update an existing horse
      operationId: editHorse
      tags:
        - clientPublic
      security:
        - EquictyAuthenticationBearer: []
      parameters:
        - name: horseId
          in: path
          required: true
          description: ID of the horse to update
          schema:
            type: integer
            format: int32
      requestBody:
        description: edit horse request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertHorseRequest'
      responses:
        '200':
          description: Horse details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicHorseModelSimple'
        '400':
          description: validation errors
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SimpleResponseBody'
                  - $ref: '#/components/schemas/ValidationError'
        '401':
          description: authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleResponseBody'
        '500':
          description: internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleResponseBody'
components:
  schemas:
    PublicApiTaskType:
      type: string
      enum:
        - TRAINING
        - HEALTH
        - MARE
    PublicTaskSimpleModel:
      type: object
      properties:
        id:
          type: integer
          format: int32
        taskType:
          $ref: '#/components/schemas/PublicApiTaskType'
        action:
          type: string
          description: an activity of a task
        horse:
          description: horse's id and name
          nullable: false
          type: object
          properties:
            id:
              type: integer
              format: int32
            name:
              type: string
        rider:
          description: staff member's id and name
          type: object
          nullable: false
          properties:
            id:
              type: integer
              format: int32
            name:
              type: string
        taskInfo:
          type: string
        recurring:
          type: boolean
        executed:
          type: boolean
        from:
          type: string
          example: '28-12-2023 12:59'
        to:
          type: string
          example: '28-12-2023 12:59'
        period:
          type: integer
          format: int32
        allDayTask:
          type: boolean
    PublicApiStaffType:
      type: string
      enum:
        - RIDER
        - GROOM
        - TRAINER
        - STAFF
        - VETERINARIAN
        - DENTIST
        - MANAGER
        - FARRIER
        - OSTEOPATH
    PublicVideo:
      type: object
      properties:
        name:
          type: string
        module:
          type: string
        mediaurl:
          type: string
        miniatureurl:
          type: string
    PublicHorseModelSimple:
      type: object
      required:
        - id
        - name
        - official_name
        - nick_name
        - age
        - birthday
        - sex
        - studbook
        - color
        - height
        - heightunit
        - breeder
        - chipnumber
        - last_updated_at
        - horsetelex
        - profile
        - miniature
      properties:
        id:
          type: integer
          format: int32
          nullable: false
        name:
          type: string
          nullable: false
        official_name:
          type: string
          nullable: false
        nick_name:
          type: string
          nullable: false
        age:
          type: integer
          format: int32
          nullable: false
        birthday:
          type: string
          example: 23-10-2023
          nullable: false
          description: empty string if no birthday is known (ensuring backwards compatibility)
        sex:
          type: string
          nullable: false
        studbook:
          type: string
          nullable: false
        color:
          type: string
          nullable: false
        height:
          type: integer
          format: int32
          nullable: false
        heightunit:
          type: string
          nullable: false
        breeder:
          type: string
          nullable: false
        chipnumber:
          type: string
          nullable: false
        last_updated_at:
          type: string
          example: '23-10-2023 12:59:59'
          nullable: true
        pedigree:
          allOf:
            - $ref: '#/components/schemas/Pedigree'
          nullable: false
          description: pedigree is present for a horse unless the horse is synced with horsetelex (in which case the pedigree is only present in PublicHorseModelDetailed)
        horsetelex:
          type: boolean
          nullable: false
        profile:
          type: string
          nullable: false
        miniature:
          type: string
          nullable: false
        level:
          type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        disciplines:
          type: array
          items:
            type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        sku:
          type: string
          nullable: true
          description: This property is only present if flag `include_additional_info` is set to true in the request
        breeding_associations:
          type: array
          items:
            type: string
            nullable: false
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        semen_availability:
          type: array
          items:
            type: string
            nullable: false
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        wffs_test_result:
          type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        semen_price:
          type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        sales_content:
          type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        registration_number:
          type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        location:
          type: string
          nullable: true
          description: This property is only present if flag `include_additional_info` is set to true in the request
        active:
          type: boolean
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        price_range:
          type: string
          nullable: true
          description: This property is only present if flag `include_additional_info` is set to true in the request
        shares:
          type: array
          nullable: false
          items:
            type: object
            nullable: false
            properties:
              owner_id:
                type: integer
                format: int32
                nullable: false
              name:
                type: string
                nullable: false
              ownership:
                type: number
                format: float
                nullable: false
              cost_split:
                type: number
                format: float
                nullable: false
              profit_split:
                type: number
                format: float
                nullable: false
              competition_cost_split:
                type: number
                format: float
                nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
    PublicHorseModelDetailed:
      type: object
      required:
        - id
        - name
        - official_name
        - nick_name
        - age
        - birthday
        - sex
        - studbook
        - color
        - height
        - heightunit
        - breeder
        - chipnumber
        - last_updated_at
        - horsetelex
        - profile
        - miniature
        - level
        - info
        - pedigree
        - videos
        - pictures
      properties:
        id:
          type: integer
          format: int32
          nullable: false
        name:
          type: string
          nullable: false
        official_name:
          type: string
          nullable: false
        nick_name:
          type: string
          nullable: false
        age:
          type: integer
          format: int32
          nullable: false
        birthday:
          type: string
          example: 23-10-2023
          nullable: false
          description: empty string if no birthday is known (ensuring backwards compatibility)
        sex:
          type: string
          nullable: false
        studbook:
          type: string
          nullable: false
        color:
          type: string
          nullable: false
        height:
          type: integer
          format: int32
          nullable: false
        heightunit:
          type: string
          nullable: false
        breeder:
          type: string
          nullable: false
        chipnumber:
          type: string
          nullable: false
        last_updated_at:
          type: string
          example: '23-10-2023 12:59:59'
          nullable: true
        pedigree:
          allOf:
            - $ref: '#/components/schemas/Pedigree'
          nullable: false
        horsetelex:
          type: boolean
          nullable: false
        profile:
          type: string
          nullable: false
        miniature:
          type: string
          nullable: false
        level:
          type: string
          nullable: false
        info:
          type: string
          nullable: false
        videos:
          type: array
          items:
            $ref: '#/components/schemas/PublicVideo'
          nullable: false
        pictures:
          type: array
          x-ignore-null: true
          items:
            $ref: '#/components/schemas/PublicPicture'
          nullable: false
        disciplines:
          type: array
          items:
            type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        sku:
          type: string
          nullable: true
          description: This property is only present if flag `include_additional_info` is set to true in the request
        breeding_associations:
          type: array
          items:
            type: string
            nullable: false
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        semen_availability:
          type: array
          items:
            type: string
            nullable: false
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        wffs_test_result:
          type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        semen_price:
          type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        sales_content:
          type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        registration_number:
          type: string
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        location:
          type: string
          nullable: true
          description: This property is only present if flag `include_additional_info` is set to true in the request
        active:
          type: boolean
          nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
        price_range:
          type: string
          nullable: true
          description: This property is only present if flag `include_additional_info` is set to true in the request
        shares:
          type: array
          nullable: false
          items:
            type: object
            nullable: false
            properties:
              owner_id:
                type: integer
                format: int32
                nullable: false
              name:
                type: string
                nullable: false
              ownership:
                type: number
                format: float
                nullable: false
              cost_split:
                type: number
                format: float
                nullable: false
              profit_split:
                type: number
                format: float
                nullable: false
              competition_cost_split:
                type: number
                format: float
                nullable: false
          description: This property is only present if flag `include_additional_info` is set to true in the request
    PublicPicture:
      type: object
      properties:
        name:
          type: string
        module:
          type: string
        mediaurl:
          type: string
        miniatureurl:
          type: string
    PublicHorsePedigreeHtmlPageRequest:
      type: object
      properties:
        horse_textcolor:
          type: string
        mare_bgcolor:
          type: string
        mare_textcolor:
          type: string
    PublicStableHorsesReadRequest:
      type: object
      required: []
      properties:
        gender:
          $ref: '#/components/schemas/HorseGender'
        last_updated_since:
          type: string
          example: '23-10-2023 12:59:59'
          nullable: true
    Pedigree:
      type: object
      description: describes horse's lineage
      properties:
        v:
          type: string
          description: sire
          nullable: false
        vv:
          type: string
          description: grand-sire (sire's sire)
          nullable: false
        vvv:
          type: string
          description: grand-sire's sire (sire's sire's sire)
          nullable: false
        vvm:
          type: string
          description: grand-sire's dam (sire's sire's dam)
          nullable: false
        vm:
          type: string
          description: sire's dam
          nullable: false
        vmv:
          type: string
          description: sire's dam's sire
          nullable: false
        vmm:
          type: string
          description: sire's dam's dam
          nullable: false
        m:
          type: string
          description: dam
          nullable: false
        mv:
          type: string
          description: dam's sire
          nullable: false
        mvv:
          type: string
          description: dam's sire's sire
          nullable: false
        mvm:
          type: string
          description: dam's sire's dam
          nullable: false
        mm:
          type: string
          description: dam's dam
          nullable: false
        mmv:
          type: string
          description: dam's dam's sire
          nullable: false
        mmm:
          type: string
          description: dam's dam's dam
          nullable: false
    HorseGender:
      type: string
      enum:
        - UNKNOWN
        - MARE
        - GELDING
        - STALLION
        - FILLY
        - COLT
    UpsertHorseRequest:
      type: object
      required:
        - name
        - stableId
      properties:
        name:
          type: string
          nullable: false
        sku:
          type: string
          nullable: true
          minLength: 1
          maxLength: 30
          description: must be between 1 and 30 characters long
        registration_number:
          type: string
          nullable: false
        location:
          type: string
          nullable: true
        birth_date:
          type: string
          example: 20-03-2024
          nullable: true
    HorseDetails:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        official_name:
          type: string
        nick_name:
          type: string
        age:
          type: integer
          format: int32
        birth_date:
          type: string
          example: 20-03-2024
        sex:
          type: string
        studbook:
          type: string
        color:
          type: string
        height:
          type: integer
          format: int32
        heightunit:
          type: string
        breeder:
          type: string
        pedigree:
          type: string
          nullable: true
        horsetelex:
          type: boolean
          description: flag indicating if the horse is synced with horsetelex
        profile:
          type: string
          description: horse's profile picture url
        miniature:
          type: string
          description: horse's miniature picture url
    ValidationError:
      type: object
      required:
        - status
        - msg
        - errors
      properties:
        status:
          type: integer
          format: int32
        msg:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              fieldName:
                type: string
              field:
                type: string
              rejectedValue:
                nullable: true
                description: 'This value can be of any type, depending on the type of the field that failed validation'
    SimpleResponseBody:
      type: object
      required:
        - status
        - msg
      properties:
        status:
          type: boolean
        msg:
          type: string
  responses:
    GenericErrorResponse:
      description: generic error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SimpleResponseBody'
  securitySchemes:
    EquictyAuthenticationBearer:
      type: http
      scheme: bearer
You have questions?
If you have any question or need help please send your request to support@equicty.com and inform us for which customer you are acting!
