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 and 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;


  1. 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
  2. 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 ? 

  1. Horse Identification information: Gender, Age, Date of Birth, Studbook, Colour, Horse Height 

  2. Horses pedigree: 3 generations 

  3. Horses pictures: Profile picture, miniature, and other pictures you have made public            

  4. Horses videos: videos you have made public

 

How to get started with the integration ?


STEP 1: Upgrade your equicty accounwith 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.

 

Configure which photos or videos you want to share with your website by activating the earth symbol
 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!