The Pet Care Platform is a comprehensive solution designed to provide the best support in pet care. We connect pet owners with a network of professional services, resources and tools that promote the well-being and health of their companions.
Asp.Net Core Web Api
PostgreSQL
Docker
- Book pet sitting services online.
- Registration and management of pet sitters on the platform.
- Security and management of the platform by administrators.
/api/v1/account
URL: register-caregiver
Method: POST
Authorization: Admin
Rate Limiting: Disabled
Request Body:
{
"firstName": "string",
"lastName": "string",
"username": "string",
"phoneNumber": "string",
"email": "string",
"password": "string"
}
Responses:
200 OK
: Returns registered caregiver data.400 Bad Request
: Validation errors.
URL: /register-pet-owner
Method: POST
Authorization: Admin
Rate Limiting: Disabled
Request Body:
{
"firstName": "string",
"lastName": "string",
"username": "string",
"phoneNumber": "string",
"email": "string",
"password": "string"
}
Responses:
200 OK
: Returns registered pet owner data.400 Bad Request
: Validation errors.
URL: /register-admin
Method: POST
Authorization: Admin
Rate Limiting: Disabled
Request Body:
{
"firstName": "string",
"lastName": "string",
"username": "string",
"phoneNumber": "string",
"email": "string",
"password": "string"
}
Responses:
200 OK
: Returns registered admin data.400 Bad Request
: Validation errors.
URL: /confirm-account
Method: GET
Rate Limiting: Enabled (fixed
)
Query Parameters:
userId
:string
token
:string
Responses:
200 OK
: Account confirmed successfully.404 Not Found
: Invalid token or user.
URL: /authenticate
Method: POST
Rate Limiting: Enabled (token
)
Request Body:
{
"email": "string",
"password": "string"
}
Responses:
200 OK
: ReturnsAuthenticateResponse
.400 Bad Request
: Account not confirmed.401 Unauthorized
: Invalid credentials.404 Not Found
: Email not found.
URL: /forgot-password
Method: POST
Authorization: Required
Rate Limiting: Enabled (fixed
)
Request Body:
{
"email": "string"
}
Responses:
200 OK
: Success message.404 Not Found
: Email not found.
URL: /reset-password
Method: POST
Authorization: Required
Rate Limiting: Disabled
Request Body:
{
"email": "string",
"password": "string"
}
Responses:
200 OK
: Password reset successfully.404 Not Found
: Invalid request.
URL: /{userId}
Method: GET
Authorization: Required
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
: ReturnsAccountDto
.404 Not Found
: User not found.
URL: /logout
Method: POST
Authorization: Required
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
: User logged out.
URL: /{userId}
Method: PUT
Authorization: Admin
Rate Limiting: Enabled (fixed
)
Request Body:
{
"firstName": "string",
"lastName": "string",
"phoneNumber": "string",
"username": "string"
}
Responses:
200 OK
: Updated account details.404 Not Found
: User not found.
URL: /api/v1/appoinment
Method: POST
Authorization: PetOwner, Admin
Rate Limiting: Enabled (fixed
)
Request Body:
{
"notes": "string",
"idServiceCatalog": 0
}
Responses:
200 OK
: Returns created appointment data.400 Bad Request
: Validation errors.
URL: /api/v1/appoinment/{id}
Method: GET
Authorization: Required
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
: ReturnsAppoinmentDTos
.404 Not Found
: Appointment not found.
URL: /api/v1/appoinment
Method: GET
Authorization: Required
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
: Returns a list of appointments.
URL: /api/v1/appoinment/{appoinmentId}
Method: DELETE
Authorization: PetOwner, Admin
Rate Limiting: Enabled (fixed
)
Responses:
204 No Content
: Appointment deleted successfully.404 Not Found
: Appointment not found.
URL: /api/v1/appoinment/{appoinmentId}
Method: PATCH
Authorization: PetOwner, Admin
Rate Limiting: Disabled
Request Body:
{
"notes": "string",
"idServiceCatalog": 0
}
Responses:
200 OK
: Returns updated appointment data.404 Not Found
: Appointment not found.
URL: /api/v1/appoinment/check-availability/service-catalog/{serviceId}
Method: GET
Authorization: PetOwner, Admin
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
: Returns service availability.404 Not Found
: Service not found.
URL: /api/v1/appoinment/availability-service/service-catalog/{serviceCatalogId}
Method: GET
Authorization: PetOwner, Admin
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
: Returns availability data.404 Not Found
: Service not found.
URL: /api/v1/appoinment/last-added
Method: GET
Authorization: Required
Rate Limiting: Enabled (fixed
)
Query Parameters:
filterDate
:Enum
Responses:
200 OK
: Returns last added appointment.400 Bad Request
: Invalid request.
URL: /api/v1.0/medical-record
Method: GET
Authorization: Required
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
: Returns a list ofMedicalRecordDTos
.
URL: /api/v1.0/medical-record/{id}
Method: GET
Authorization: Required
Rate Limiting: Enabled (fixed
)
Path Parameters:
id
:int
(Medical Record ID)
Responses:
200 OK
: ReturnsMedicalRecordDTos
.404 Not Found
: Medical record not found.
URL: /api/v1.0/medical-record
Method: POST
Authorization: Roles (Caregiver, Admin
)
Rate Limiting: Enabled (fixed
)
Request Body:
{
"treatment": "string",
"recommendations": "string",
"idPet": "int"
}
Responses:
200 OK
: Returns createdMedicalRecordDTos
.400 Bad Request
: Validation errors.404 Not Found
: Related entity not found.
URL: /api/v1.0/medical-record/{id}
Method: PUT
Authorization: Roles (Admin
)
Rate Limiting: Enabled (fixed
)
Path Parameters:
id
:int
(Medical Record ID)
Request Body:
{
"treatment": "string",
"recommendations": "string",
"idPet": "int"
}
Responses:
200 OK
: Returns updatedMedicalRecordDTos
.400 Bad Request
: Validation errors.404 Not Found
: Medical record not found.
/api/v1/pets
Endpoint: POST /api/v1/pets
Authorization: Required (User
role)
Rate Limiting: Disabled
Request Body:
{
"namePaws": "string",
"bred": "string",
"age": 0,
"color": "string",
"notesPets": "string",
"gender": "string",
"speciesId": 0
}
Responses:
200 OK
- Returns the created pet.400 Bad Request
- Validation errors.
Endpoint: DELETE /api/v1/pets/{id}
Authorization: Required (Admin
role)
Rate Limiting: Disabled
Responses:
204 No Content
- Pet deleted successfully.404 Not Found
- Pet not found.
Endpoint: GET /api/v1/pets/{id}
Authorization: Required
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
- Returns the pet details.404 Not Found
- Pet not found.
Endpoint: PUT /api/v1/pets/{id}
Authorization: Required (Caregiver
, Admin
roles)
Rate Limiting: Enabled (fixed
)
Request Body:
{
"namePaws": "string",
"bred": "string",
"age": 0,
"gender": "string",
"speciesId": 0
}
Responses:
200 OK
- Returns the updated pet.400 Bad Request
- Validation errors.404 Not Found
- Pet not found.
Endpoint: GET /api/v1/pets/last-added-today
Authorization: Required
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
- Returns a list of pets added today.
Endpoint: GET /api/v1/pets/pagination?pageNumber={page}&pageSize={size}
Authorization: Required
Rate Limiting: Enabled (fixed
)
Responses:
200 OK
- Returns paginated pet list.400 Bad Request
- Invalid pagination parameters.
{
"namePaws": "string",
"bred": "string",
"age": 0,
"color": "string",
"notesPets": "string",
"gender": "string",
"speciesId": 0
}
{
"petsId": 0,
"namePaws": "string",
"bred": "string",
"age": 0,
"color": "string",
"adoptionStatus": true,
"notesPets": "string",
"dateOfEntry": "2025-01-01T00:00:00Z",
"gender": "string",
"createdAt": "2025-01-01T00:00:00Z",
"speciesId": 0
}
{
"namePaws": "string",
"bred": "string",
"age": 0,
"gender": "string",
"speciesId": 0
}
/api/v1/service-catalog
GET /api/v1/service-catalog
Authorization: Required
Rate Limiting: Enabled (fixed
)
Response:
200 OK
: Returns a list of service catalog entries.
GET /api/v1/service-catalog/{id}
Authorization: Required
Rate Limiting: Enabled (fixed
)
Response:
200 OK
: Returns the service catalog entry.404 Not Found
: Entry does not exist.
POST /api/v1/service-catalog
Authorization: Required (Caregiver, Admin
roles)
Rate Limiting: Disabled
Request Body:
{
"nameService": "string",
"descriptionService": "string",
"price": "decimal",
"type": "string",
"duration": "int"
}
Response:
200 OK
: Returns the created service catalog entry.400 Bad Request
: Validation errors.
PUT /api/v1/service-catalog/{id}
Authorization: Required (Admin
role)
Rate Limiting: Enabled (fixed
)
Request Body:
{
"nameService": "string",
"descriptionService": "string",
"price": "decimal",
"type": "string",
"duration": "int"
}
Response:
200 OK
: Returns the updated service catalog entry.400 Bad Request
: Validation errors.404 Not Found
: Entry does not exist.
DELETE /api/v1/service-catalog/{id}
Authorization: Required (Admin
role)
Rate Limiting: Disabled
Response:
204 No Content
: Successfully deleted.400 Bad Request
: Deletion failed.
{
"NameService": "string",
"DescriptionService": "string",
"Price": "decimal",
"Type": "string",
"Duration": "int"
}
{
"ServiceCatalogId": "int",
"NameService": "string",
"DescriptionService": "string",
"Price": "decimal",
"CreatedAt": "DateTime",
"Type": "string",
"IsAvaible": "bool",
"Duration": "int"
}
{
"NameService": "string",
"DescriptionService": "string",
"Price": "decimal",
"Type": "string",
"Duration": "int"
}
/api/v1.0/species
All endpoints require authentication via JWT. Some endpoints require specific roles (Caregiver
, Admin
).
GET /api/v1.0/species
- Authorization: Required
- Rate Limiting: Enabled
- Response Codes:
200 OK
: Returns a list of all species.
[
{
"speciesId": 1,
"descriptionOfSpecies": "Mammal",
"entryOfSpecies": "2024-02-01T12:00:00Z"
}
]
GET /api/v1.0/species/{id}
- Authorization: Required
- Rate Limiting: Enabled
- Path Parameters:
id
(int, required) - The ID of the species.
- Response Codes:
200 OK
: Returns the species data.404 Not Found
: Species not found.
{
"speciesId": 1,
"descriptionOfSpecies": "Mammal",
"entryOfSpecies": "2024-02-01T12:00:00Z"
}
POST /api/v1.0/species
- Authorization: Required (Roles:
Caregiver
,Admin
) - Rate Limiting: Disabled
- Request Body:
descriptionOfSpecies
(string, required)
- Response Codes:
200 OK
: Successfully created.400 Bad Request
: Validation failed.
{
"descriptionOfSpecies": "Reptile"
}
{
"speciesId": 2,
"descriptionOfSpecies": "Reptile",
"entryOfSpecies": "2024-02-01T12:05:00Z"
}
PATCH /api/v1.0/species/{id}
- Authorization: Required (Roles:
Caregiver
,Admin
) - Rate Limiting: Enabled
- Path Parameters:
id
(int, required) - The ID of the species.
- Request Body:
descriptionOfSpecies
(string, required)
- Response Codes:
200 OK
: Successfully updated.404 Not Found
: Species not found.400 Bad Request
: Validation failed.
{
"descriptionOfSpecies": "Amphibian"
}
{
"speciesId": 2,
"descriptionOfSpecies": "Amphibian",
"entryOfSpecies": "2024-02-01T12:05:00Z"
}
DELETE /api/v1.0/species/{id}
- Authorization: Required (Role:
Admin
) - Rate Limiting: Disabled
- Path Parameters:
id
(int, required) - The ID of the species.
- Response Codes:
204 No Content
: Successfully deleted.404 Not Found
: Species not found.
GET /api/v1.0/species/last-added
- Authorization: Required
- Rate Limiting: Enabled
- Response Codes:
200 OK
: Returns the most recently added species.
{
"speciesId": 3,
"descriptionOfSpecies": "Bird",
"entryOfSpecies": "2024-02-02T10:30:00Z"
}
GET /api/v1.0/species/order-by?sort={sort}&direction={direction}
- Authorization: Required
- Rate Limiting: Enabled
- Query Parameters:
sort
(string, required) - The field to sort by (e.g.,speciesId
).direction
(string, required) - Sorting order (asc
ordesc
).
- Response Codes:
200 OK
: Returns sorted species list.400 Bad Request
: Invalid parameters.
GET /api/v1.0/species/order-by?sort=speciesId&direction=asc