https://github.com/wil-jsdev/cuidandopawsapi
This project is about the care and adoption of pets
https://github.com/wil-jsdev/cuidandopawsapi
aspnet-web-api coding docker-compose postgresql project
Last synced: about 2 months ago
JSON representation
This project is about the care and adoption of pets
- Host: GitHub
- URL: https://github.com/wil-jsdev/cuidandopawsapi
- Owner: Wil-JsDev
- License: mit
- Created: 2024-10-27T19:27:43.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-02-03T22:23:48.000Z (5 months ago)
- Last Synced: 2025-02-03T23:25:15.487Z (5 months ago)
- Topics: aspnet-web-api, coding, docker-compose, postgresql, project
- Language: C#
- Homepage:
- Size: 279 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: License.txt
Awesome Lists containing this project
README
Well-being and care for each pet, in one place
# Cuidando Paws 🐾
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.
## 📦 Technologies- `Asp.Net Core Web Api`
- `PostgreSQL`
- `Docker`
## 🚀 Features- Book pet sitting services online.
- Registration and management of pet sitters on the platform.
- Security and management of the platform by administrators.# API Documentation (V1)
## Acoount Endpoints
## Base URL
`/api/v1/account`
### Register Caregiver**URL:** `register-caregiver`
**Method:** `POST`
**Authorization:** Admin
**Rate Limiting:** Disabled
**Request Body:**
```json
{
"firstName": "string",
"lastName": "string",
"username": "string",
"phoneNumber": "string",
"email": "string",
"password": "string"
}
```
**Responses:**
- `200 OK`: Returns registered caregiver data.
- `400 Bad Request`: Validation errors.---
### Register Pet Owner
**URL:** `/register-pet-owner`
**Method:** `POST`
**Authorization:** Admin
**Rate Limiting:** Disabled
**Request Body:**
```json
{
"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.---
### Register Admin
**URL:** `/register-admin`
**Method:** `POST`
**Authorization:** Admin
**Rate Limiting:** Disabled
**Request Body:**
```json
{
"firstName": "string",
"lastName": "string",
"username": "string",
"phoneNumber": "string",
"email": "string",
"password": "string"
}
```
**Responses:**
- `200 OK`: Returns registered admin data.
- `400 Bad Request`: Validation errors.---
### Confirm Account
**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.---
### Authenticate
**URL:** `/authenticate`
**Method:** `POST`
**Rate Limiting:** Enabled (`token`)
**Request Body:**
```json
{
"email": "string",
"password": "string"
}
```
**Responses:**
- `200 OK`: Returns `AuthenticateResponse`.
- `400 Bad Request`: Account not confirmed.
- `401 Unauthorized`: Invalid credentials.
- `404 Not Found`: Email not found.---
### Forgot Password
**URL:** `/forgot-password`
**Method:** `POST`
**Authorization:** Required
**Rate Limiting:** Enabled (`fixed`)
**Request Body:**
```json
{
"email": "string"
}
```
**Responses:**
- `200 OK`: Success message.
- `404 Not Found`: Email not found.---
### Reset Password
**URL:** `/reset-password`
**Method:** `POST`
**Authorization:** Required
**Rate Limiting:** Disabled
**Request Body:**
```json
{
"email": "string",
"password": "string"
}
```
**Responses:**
- `200 OK`: Password reset successfully.
- `404 Not Found`: Invalid request.---
### Get Account Details
**URL:** `/{userId}`
**Method:** `GET`
**Authorization:** Required
**Rate Limiting:** Enabled (`fixed`)
**Responses:**
- `200 OK`: Returns `AccountDto`.
- `404 Not Found`: User not found.---
### Logout
**URL:** `/logout`
**Method:** `POST`
**Authorization:** Required
**Rate Limiting:** Enabled (`fixed`)
**Responses:**
- `200 OK`: User logged out.---
### Update Account Details
**URL:** `/{userId}`
**Method:** `PUT`
**Authorization:** Admin
**Rate Limiting:** Enabled (`fixed`)
**Request Body:**
```json
{
"firstName": "string",
"lastName": "string",
"phoneNumber": "string",
"username": "string"
}
```
**Responses:**
- `200 OK`: Updated account details.
- `404 Not Found`: User not found.
---## Appoinment Endpoints (V1)
### Create Appointment
**URL:** `/api/v1/appoinment`
**Method:** `POST`
**Authorization:** `PetOwner, Admin`
**Rate Limiting:** Enabled (`fixed`)
**Request Body:**
```json
{
"notes": "string",
"idServiceCatalog": 0
}
```
**Responses:**
- `200 OK`: Returns created appointment data.
- `400 Bad Request`: Validation errors.---
### Get Appointment by ID
**URL:** `/api/v1/appoinment/{id}`
**Method:** `GET`
**Authorization:** Required
**Rate Limiting:** Enabled (`fixed`)
**Responses:**
- `200 OK`: Returns `AppoinmentDTos`.
- `404 Not Found`: Appointment not found.---
### Get All Appointments
**URL:** `/api/v1/appoinment`
**Method:** `GET`
**Authorization:** Required
**Rate Limiting:** Enabled (`fixed`)
**Responses:**
- `200 OK`: Returns a list of appointments.---
### Delete Appointment
**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.---
### Update Appointment
**URL:** `/api/v1/appoinment/{appoinmentId}`
**Method:** `PATCH`
**Authorization:** `PetOwner, Admin`
**Rate Limiting:** Disabled
**Request Body:**
```json
{
"notes": "string",
"idServiceCatalog": 0
}
```
**Responses:**
- `200 OK`: Returns updated appointment data.
- `404 Not Found`: Appointment not found.---
### Check Appointment Availability
**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.---
### Get Availability for a Service
**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.---
### Get Last Added Appointment
**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.## Medical Record Endpoints (V1)
### Get All Medical Records
**URL:** `/api/v1.0/medical-record`
**Method:** `GET`
**Authorization:** Required
**Rate Limiting:** Enabled (`fixed`)
**Responses:**
- `200 OK`: Returns a list of `MedicalRecordDTos`.---
### Get Medical Record by ID
**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`: Returns `MedicalRecordDTos`.
- `404 Not Found`: Medical record not found.---
### Create Medical Record
**URL:** `/api/v1.0/medical-record`
**Method:** `POST`
**Authorization:** Roles (`Caregiver, Admin`)
**Rate Limiting:** Enabled (`fixed`)
**Request Body:**
```json
{
"treatment": "string",
"recommendations": "string",
"idPet": "int"
}
```
**Responses:**
- `200 OK`: Returns created `MedicalRecordDTos`.
- `400 Bad Request`: Validation errors.
- `404 Not Found`: Related entity not found.---
### Update Medical Record
**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:**
```json
{
"treatment": "string",
"recommendations": "string",
"idPet": "int"
}
```
**Responses:**
- `200 OK`: Returns updated `MedicalRecordDTos`.
- `400 Bad Request`: Validation errors.
- `404 Not Found`: Medical record not found.---
# Pets Endpoints (v1)
## Base URL
`/api/v1/pets`### Create a Pet
**Endpoint:** `POST /api/v1/pets`**Authorization:** Required (`User` role)
**Rate Limiting:** Disabled
**Request Body:**
```json
{
"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.---
### Delete a Pet
**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.---
### Get a Pet by ID
**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.---
### Update a Pet
**Endpoint:** `PUT /api/v1/pets/{id}`**Authorization:** Required (`Caregiver`, `Admin` roles)
**Rate Limiting:** Enabled (`fixed`)
**Request Body:**
```json
{
"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.---
### Get Pets Added Today
**Endpoint:** `GET /api/v1/pets/last-added-today`**Authorization:** Required
**Rate Limiting:** Enabled (`fixed`)
**Responses:**
- `200 OK` - Returns a list of pets added today.---
### Get Paginated Pets
**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.---
## Data Transfer Objects (DTOs)
### CreatePetsDTos
```json
{
"namePaws": "string",
"bred": "string",
"age": 0,
"color": "string",
"notesPets": "string",
"gender": "string",
"speciesId": 0
}
```### PetsDTos
```json
{
"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
}
```### UpdatePetsDTos
```json
{
"namePaws": "string",
"bred": "string",
"age": 0,
"gender": "string",
"speciesId": 0
}
```
---
# Service Catalog API (v1)## Base URL
`/api/v1/service-catalog`
## Endpoints
### Get All Service Catalog Entries
**GET** `/api/v1/service-catalog`**Authorization:** Required
**Rate Limiting:** Enabled (`fixed`)
**Response:**
- `200 OK`: Returns a list of service catalog entries.---
### Get Service Catalog Entry by ID
**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.---
### Create a New Service Catalog Entry
**POST** `/api/v1/service-catalog`**Authorization:** Required (`Caregiver, Admin` roles)
**Rate Limiting:** Disabled
**Request Body:**
```json
{
"nameService": "string",
"descriptionService": "string",
"price": "decimal",
"type": "string",
"duration": "int"
}
```**Response:**
- `200 OK`: Returns the created service catalog entry.
- `400 Bad Request`: Validation errors.---
### Update an Existing Service Catalog Entry
**PUT** `/api/v1/service-catalog/{id}`**Authorization:** Required (`Admin` role)
**Rate Limiting:** Enabled (`fixed`)
**Request Body:**
```json
{
"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 a Service Catalog Entry
**DELETE** `/api/v1/service-catalog/{id}`**Authorization:** Required (`Admin` role)
**Rate Limiting:** Disabled
**Response:**
- `204 No Content`: Successfully deleted.
- `400 Bad Request`: Deletion failed.---
## DTOs
### CreateServiceCatalogDTos
```json
{
"NameService": "string",
"DescriptionService": "string",
"Price": "decimal",
"Type": "string",
"Duration": "int"
}
```### ServiceCatalogDTos
```json
{
"ServiceCatalogId": "int",
"NameService": "string",
"DescriptionService": "string",
"Price": "decimal",
"CreatedAt": "DateTime",
"Type": "string",
"IsAvaible": "bool",
"Duration": "int"
}
```### UpdateServiceCatalogDTos
```json
{
"NameService": "string",
"DescriptionService": "string",
"Price": "decimal",
"Type": "string",
"Duration": "int"
}```
# Species API (v1)## Base URL
`/api/v1.0/species`
## Authentication
All endpoints require authentication via JWT. Some endpoints require specific roles (`Caregiver`, `Admin`).## Endpoints
### 1. Get All Species
**GET** `/api/v1.0/species`
- **Authorization:** Required
- **Rate Limiting:** Enabled
- **Response Codes:**
- `200 OK`: Returns a list of all species.#### Example Response
```json
[
{
"speciesId": 1,
"descriptionOfSpecies": "Mammal",
"entryOfSpecies": "2024-02-01T12:00:00Z"
}
]
```---
### 2. Get Species by ID
**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.#### Example Response
```json
{
"speciesId": 1,
"descriptionOfSpecies": "Mammal",
"entryOfSpecies": "2024-02-01T12:00:00Z"
}
```---
### 3. Create a New Species
**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.#### Example Request
```json
{
"descriptionOfSpecies": "Reptile"
}
```#### Example Response
```json
{
"speciesId": 2,
"descriptionOfSpecies": "Reptile",
"entryOfSpecies": "2024-02-01T12:05:00Z"
}
```---
### 4. Update a Species
**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.#### Example Request
```json
{
"descriptionOfSpecies": "Amphibian"
}
```#### Example Response
```json
{
"speciesId": 2,
"descriptionOfSpecies": "Amphibian",
"entryOfSpecies": "2024-02-01T12:05:00Z"
}
```---
### 5. Delete a Species
**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.---
### 6. Get Last Added Species
**GET** `/api/v1.0/species/last-added`
- **Authorization:** Required
- **Rate Limiting:** Enabled
- **Response Codes:**
- `200 OK`: Returns the most recently added species.#### Example Response
```json
{
"speciesId": 3,
"descriptionOfSpecies": "Bird",
"entryOfSpecies": "2024-02-02T10:30:00Z"
}
```---
### 7. Get Species Ordered by ID
**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` or `desc`).
- **Response Codes:**
- `200 OK`: Returns sorted species list.
- `400 Bad Request`: Invalid parameters.#### Example Request
```
GET /api/v1.0/species/order-by?sort=speciesId&direction=asc
```