Vettigo API (1.1.0)

Download OpenAPI specification:

Welcome to the Vettigo API, which provides a comprehensive interface for accessing data related to clinics using Vettigo.

Endpoints Overview

  • Business Intelligence:
    Access endpoints for data on clients, animals, species, invoice lines, and more.

  • Third-Party Integration:
    Utilize endpoints to read and write data for clients, animals, and treatment notes, facilitating seamless integration with third-party products.

Documentation

This documentation covers all available endpoints, offering detailed information on how to interact with the Vettigo API.

Access

To access the endpoints, you will need a key and secret provided by MIBIT/Vettigo. For integration requests, please contact us at devops@mibit.dk with details about your integration purpose.

Note that access to data for specific clinics requires explicit permission from the clinics themselves. The key and secret alone do not grant access.

Fair Usage Policy

To ensure optimal performance and a positive experience for all users, we encourage developers to optimize their API calls and workflows. Excessive load on the API may result in restricted access, and the responsible developers will be contacted.

A rate limit of 100 requests per minute is enforced. If this limit is exceeded, further requests will be temporarily blocked until the rate limit window resets. Implement error handling and retry logic in your application to manage these rate limit constraints effectively.

For any questions regarding the API, please reach out to us at devops@mibit.dk

auth

Authentication endpoints

Server Session JWT

Creates a new API session verified by a JSON Web Token, that must be used in Bearer authentication required by protetected endpoints.

The JWT expires after 3 hours after which a new session must be created.

Request Body schema: application/json
required

Request JWT

key
required
string

Unique identifier of a server acting as Vettigo API client.

secret
required
string

Secret verifying the identity of the server.

Responses

Request samples

Content type
application/json
{
  • "key": "string",
  • "secret": "string"
}

Response samples

Content type
application/json
{
  • "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}

data

Endpoints for retrieving business intelligence data. The data returned by these endpoints may include a default date of "1900-01-01 00:00:00" when a valid date is not available. Ensure proper date handling in your application.

Animals

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

query Parameters
updatedSince
string <date>
Example: updatedSince=2024-01-01

Exclude animals if no data was changed since this data

maxItems
integer [ 1 .. 1000 ]
Default: 1000

Maximum number of animals contained in the response object.

offset
integer >= 0
Default: 0

Zero based index of the first animal contained in the response object.

Responses

Response samples

Content type
application/json
{
  • "itemsInResponseContents": 1000,
  • "offset": 0,
  • "totalItemsInQueryResult": 0,
  • "Contents": [
    ]
}

Animal Species

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "Contents": [
    ]
}

Appointments

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

query Parameters
startDate
required
string <date>
Example: startDate=2024-01-01

Start date

endDate
required
string <date>
Example: endDate=2024-01-31

End date

type
string
Enum: "apps" "work" "functions"

Type

maxItems
integer [ 1 .. 1000 ]
Default: 1000

Maximum number of Appointments contained in the response object.

offset
integer >= 0
Default: 0

Zero based index of the first appointment contained in the response object.

Responses

Response samples

Content type
application/json
{
  • "itemsInResponseContents": 1000,
  • "offset": 0,
  • "totalItemsInQueryResult": 0,
  • "Contents": [
    ]
}

Appointments

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier. Use 0 for clinics not using Vettigo Enterprise.

query Parameters
userID
string
Example: userID=deptest1

UserID

startDate
required
string <date>
Example: startDate=2024-01-01

Start date

endDate
required
string <date>
Example: endDate=2024-01-31

End date

type
required
string
Enum: "work" "functions"

Type

Responses

Clients

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

query Parameters
updatedSince
string <date>
Example: updatedSince=2024-01-01

Exclude clients if no data was changed since this data

maxItems
integer [ 1 .. 1000 ]
Default: 1000

Maximum number of invoice lines contained in the response object.

offset
integer >= 0
Default: 0

Zero based index of the first invoice line contained in the response object.

Responses

Response samples

Content type
application/json
{
  • "itemsInResponseContents": 1000,
  • "offset": 0,
  • "totalItemsInQueryResult": 0,
  • "Contents": [
    ]
}

Clinics

Returns a complete list of clinics in which the authorized user has access to ressources.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "Contents": [
    ]
}

Clinic

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

Responses

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Department

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

Responses

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Fuse Analytes

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

query Parameters
startDate
required
string <date>
Example: startDate=2024-01-01

Start date

endDate
required
string <date>
Example: endDate=2024-01-31

End date

maxItems
integer [ 1 .. 1000 ]
Default: 1000

Maximum number of items contained in the response object.

offset
integer >= 0
Default: 0

Zero based index of the first item contained in the response object.

Responses

Response samples

Content type
application/json
{
  • "itemsInResponseContents": 1000,
  • "offset": 0,
  • "totalItemsInQueryResult": 0,
  • "Contents": [
    ]
}

Invoice Lines

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

query Parameters
startDate
required
string <date>
Example: startDate=2024-01-01

Start date

endDate
required
string <date>
Example: endDate=2024-01-31

End date

maxItems
integer [ 1 .. 1000 ]
Default: 1000

Maximum number of invoice lines contained in the response object.

offset
integer >= 0
Default: 0

Zero based index of the first invoice line contained in the response object.

Responses

Response samples

Content type
application/json
{
  • "itemsInResponseContents": 1000,
  • "offset": 0,
  • "totalItemsInQueryResult": 0,
  • "Contents": [
    ]
}

Items

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

query Parameters
itemType
string <date>
Default: "all"

Item Type (all, eldorado, hills, kruuse, provet, royalcanin, vetpharm, nomeco, tmj, own, vif)

Responses

Response samples

Content type
application/json
{
  • "itemsInResponseContents": 1000,
  • "offset": 0,
  • "totalItemsInQueryResult": 0,
  • "Contents": [
    ]
}

Subscription Types

Returns a complete list of subscription types in a clinics.

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

query Parameters
maxItems
integer [ 1 .. 1000 ]
Default: 1000

Maximum number of subscription types contained in the response object.

offset
integer >= 0
Default: 0

Zero based index of the first subscription type contained in the response object.

Responses

Response samples

Content type
application/json
{
  • "Contents": [
    ]
}

Reminder Templates

Returns a complete list of reminder templates in a clinics.

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

query Parameters
maxItems
integer [ 1 .. 1000 ]
Default: 1000

Maximum number of reminder templates contained in the response object.

offset
integer >= 0
Default: 0

Zero based index of the first reminder templates contained in the response object.

Responses

Response samples

Content type
application/json
{
  • "Contents": [
    ]
}

Reminders

Returns a complete list of reminders types in a clinics.

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

query Parameters
startDate
required
string <date>
Example: startDate=2024-01-01

Start date

endDate
required
string <date>
Example: endDate=2024-01-31

End date

maxItems
integer [ 1 .. 1000 ]
Default: 1000

Maximum number of reminders contained in the response object.

offset
integer >= 0
Default: 0

Zero based index of the first reminder contained in the response object.

Responses

Response samples

Content type
application/json
{
  • "Contents": [
    ]
}

Users

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

Responses

Response samples

Content type
application/json
{
  • "Contents": [
    ]
}

Debtors

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

query Parameters
perDate
string <date>
Example: perDate=2024-01-31

Debtors per date

Responses

Response samples

Content type
application/json
{
  • "itemsInResponseContents": 1000,
  • "offset": 0,
  • "totalItemsInQueryResult": 0,
  • "Contents": [
    ]
}

client

Client

Add client

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

Request Body schema: application/json
clientExternalUID
string
name
required
string [ 1 .. 50 ]
address
string
postalCode
string
city
string
country
string
object
email
string <email>

Responses

Request samples

Content type
application/json
{
  • "clientExternalUID": "3b241101-e2bb-4255-8caf-4136c566a962",
  • "name": "string",
  • "address": "string",
  • "postalCode": "string",
  • "city": "string",
  • "country": "string",
  • "phoneNumbers": {
    },
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Client

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

clientID
required
integer

Client identifier within clinic

Responses

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Update client

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

clientID
required
string [ 4 .. 20 ] characters

Animal identifier within clinic

Request Body schema: application/json
clientExternalUID
string
name
required
string [ 1 .. 50 ]
address
string
postalCode
string
city
string
country
string
object
email
string <email>

Responses

Request samples

Content type
application/json
{
  • "clientExternalUID": "3b241101-e2bb-4255-8caf-4136c566a962",
  • "name": "string",
  • "address": "string",
  • "postalCode": "string",
  • "city": "string",
  • "country": "string",
  • "phoneNumbers": {
    },
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

animal

Animal

Add animal

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

Request Body schema: application/json
clientID
required
integer
animalExternalUID
string [ 4 .. 36 ] characters
animalName
required
string [ 1 .. 100 ]
animalSpeciesID
integer
animalRaceLabel
integer
animalChipNumber
integer
animalRegNumber
string <= 50
animalSex
string <= 30
animalColor
string <= 50
isNeutered
boolean
isDead
boolean
deathDate
string <date>

Responses

Request samples

Content type
application/json
{
  • "clientID": 2109043,
  • "animalExternalUID": "3b241101-e2bb-4255-8caf-4136c566a962",
  • "animalName": "Daisy",
  • "animalSpeciesID": 3,
  • "animalRaceLabel": "Hund",
  • "animalChipNumber": 985100005331564,
  • "animalRegNumber": "string",
  • "animalSex": "string",
  • "animalColor": "string",
  • "isNeutered": true,
  • "isDead": true,
  • "deathDate": "2020-10-04"
}

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Animal

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

animalID
required
string [ 4 .. 20 ] characters

Animal identifier within clinic

Responses

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Update animal

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

animalID
required
string [ 4 .. 20 ] characters

Animal identifier within clinic

Request Body schema: application/json
clientID
required
integer
animalExternalUID
string [ 4 .. 36 ] characters
animalName
required
string [ 1 .. 100 ]
animalSpeciesID
integer
animalRaceLabel
integer
animalChipNumber
integer
animalRegNumber
string <= 50
animalSex
string <= 30
animalColor
string <= 50
isNeutered
boolean
isDead
boolean
deathDate
string <date>

Responses

Request samples

Content type
application/json
{
  • "clientID": 2109043,
  • "animalExternalUID": "3b241101-e2bb-4255-8caf-4136c566a962",
  • "animalName": "Daisy",
  • "animalSpeciesID": 3,
  • "animalRaceLabel": "Hund",
  • "animalChipNumber": 985100005331564,
  • "animalRegNumber": "string",
  • "animalSex": "string",
  • "animalColor": "string",
  • "isNeutered": true,
  • "isDead": true,
  • "deathDate": "2020-10-04"
}

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Update animal owner

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

animalID
required
string [ 4 .. 20 ] characters

Animal identifier within clinic

query Parameters
newOwnerId
required
integer >= 1

New owner identifier

Responses

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

appointment

Appointment

Add appointment

Adds an appointment

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

Request Body schema: application/json
userID
required
string
appointmentsBookName
required
string
start
required
any <datetime>
end
required
any <datetime>
type
required
string
reason
string
clientNumber
integer
animalID
integer

Responses

Request samples

Content type
application/json
{
  • "userID": "deptest1",
  • "appointmentsBookName": "Brian A",
  • "start": "2024-01-31 10:00:00",
  • "end": "2024-01-31 11:00:00",
  • "type": "string",
  • "reason": "string",
  • "clientNumber": 0,
  • "animalID": 0
}

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Appointment

Get an appointment

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

appointmentID
required
integer

Appointment identifier within clinic

Responses

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Appointment

Update appointment

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

appointmentID
required
integer

Appointment identifier within clinic

Request Body schema: application/json
userID
required
string
appointmentsBookName
required
string
start
required
any <datetime>
end
required
any <datetime>
type
required
string
reason
string
clientNumber
integer
animalID
integer

Responses

Request samples

Content type
application/json
{
  • "userID": "deptest1",
  • "appointmentsBookName": "Brian A",
  • "start": "2024-01-31 10:00:00",
  • "end": "2024-01-31 11:00:00",
  • "type": "string",
  • "reason": "string",
  • "clientNumber": 0,
  • "animalID": 0
}

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

Appointment

Delete an appointment

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

departmentID
required
integer

Department identifier

appointmentID
required
integer

Appointment identifier within clinic

Responses

medical-record

Add medical record note

Adds a dated note to a medical record. Make sure that all characters used in the note can be converted from UTF-8 to Latin-1 without data loss.

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

Request Body schema: application/json
departmentID
integer
userID
string [ 4 .. 20 ] characters
animalID
required
integer

animalNumber can be used here

note
required
string
noteDate
required
any <datetime>

Responses

Request samples

Content type
application/json
{
  • "departmentID": 39,
  • "userID": "string",
  • "animalID": 2109043,
  • "note": "string",
  • "noteDate": "2024-01-31 11:07:12"
}

Response samples

Content type
application/json
{
  • "Contents": {
    }
}

search

Search

Find client

Authorizations:
bearerAuth
path Parameters
clinicID
required
string [ 4 .. 20 ] characters

Clinic identifier

query Parameters
filter
required
string
Value: "phoneNumber"

The search strategy that should be used to find clients

filterParams
required
string >= 4 characters
Example: filterParams=%2B45%2011111111

A comma separated string with parameters required by the filter Commas should be encoded as %2C

Responses

Response samples

Content type
application/json
{
  • "Contents": [
    ]
}

Client

clientID
integer
clientExternalUID
string
clinicID
string
clientNumber
integer
name
string
address
string
postalCode
string
city
string
country
string
object
email
string <email>
wantNewsletters
integer
createdAt
string <datetime>
updatedAt
string <datetime>
{
  • "clientID": 0,
  • "clientExternalUID": "3b241101-e2bb-4255-8caf-4136c566a962",
  • "clinicID": "string",
  • "clientNumber": 0,
  • "name": "string",
  • "address": "string",
  • "postalCode": "string",
  • "city": "string",
  • "country": "string",
  • "phoneNumbers": {
    },
  • "email": "user@example.com",
  • "wantNewsletters": "1",
  • "createdAt": "2024-01-31 11:07:12",
  • "updatedAt": "2024-01-31 11:07:12"
}

Animal

animalID
integer
animalExternalUID
string
clinicID
string
animalNumber
integer
animalName
string <= 50
clientID
integer
animalSpeciesID
integer
animalRaceLabel
integer
animalChipNumber
integer
animalRegNumber
string <= 50
animalBirthday
string <date>
animalSex
string <= 30
animalColor
string <= 50
isNeutered
boolean
isDead
boolean
deathDate
string <date>
createdAt
string <datetime>
updatedAt
string <datetime>
{
  • "animalID": 0,
  • "animalExternalUID": "3b241101-e2bb-4255-8caf-4136c566a962",
  • "clinicID": "vgab999",
  • "animalNumber": 2076,
  • "animalName": "Fido",
  • "clientID": 2109043,
  • "animalSpeciesID": 3,
  • "animalRaceLabel": "Hund",
  • "animalChipNumber": 985100005331564,
  • "animalRegNumber": "string",
  • "animalBirthday": "2019-10-23",
  • "animalSex": "string",
  • "animalColor": "string",
  • "isNeutered": true,
  • "isDead": true,
  • "deathDate": "0000-00-00",
  • "createdAt": "2024-01-31 09:07:53",
  • "updatedAt": "2024-01-31 09:07:53"
}

Animal Species

animalSpeciesID
integer
name
string <= 50
createdAt
string <datetime>
updatedAt
string <datetime>
{
  • "animalSpeciesID": 0,
  • "name": "string",
  • "createdAt": "2024-01-31 11:07:12",
  • "updatedAt": "2024-01-31 11:07:12"
}

Clinic

clinicID
string
departmentIDs
Array of integers
name
string
address
string
postalCode
string
city
string
createdAt
string <datetime>
updatedAt
string <datetime>
{
  • "clinicID": "string",
  • "departmentIDs": [
    ],
  • "name": "string",
  • "address": "string",
  • "postalCode": "string",
  • "city": "string",
  • "createdAt": "2024-01-31 11:07:12",
  • "updatedAt": "2024-01-31 11:07:12"
}

Department

clinicID
string
departmentID
integer
name
string
address
string
postalCode
string
city
string
createdAt
string <datetime>
updatedAt
string <datetime>
{
  • "clinicID": "string",
  • "departmentID": 0,
  • "name": "string",
  • "address": "string",
  • "postalCode": "string",
  • "city": "string",
  • "createdAt": "2024-01-31 11:07:12",
  • "updatedAt": "2024-01-31 11:07:12"
}