GitHub: https://github.com/InmobilApp
Deploy: https://inmobil-app.herokuapp.com/
- Admin Schema
- GET /api/admins
- POST /api/admins
- GET /api/admins/:id
- DELETE /api/admins/:id
- Property Schema
- GET /api/properties
- POST /api/properties
- GET /api/properties/:id
- PUT /api/properties/:id
- DELETE /api/properties/:id
- Review Schema
- GET /api/reviews
- GET /api/reviews/:id
- POST /api/reviews
- DELETE /api/reviews/:id
- AGENT SCHEMA
- GET /api/agents
- POST /api/agents
- PUT /api/agents/:id
- DELETE /api/agents/:id
- CLIENT SCHEMA
- GET /api/clients
- POST /api/clients
- PUT /api/clients
- DELETE /api/clients/:id
Cuando pasa una ruta desconocida para el "Servidor"
response.status(404).send({ error: "unknown endpoint" });Cuando pasas un "id" no valido va a retornar
response.status(400).send({ error: "malformatted id" });Cuando ocurre un error al hacer un PUT o POST con el Schema va a retornar un message relacionado con el error.
response.status(400).json({ error: error.message });const adminSchema = new moongose.Schema({
name: String,
dni: {
type: String,
unique: true,
},
password: {
type: String,
required: true,
},
address: String,
phone: String,
age: {
type: Number,
min: 0,
max: 120,
},
permissions: {
crudAgent: {
type: Boolean,
default: true,
},
crudAdmin: {
type: Boolean,
default: true,
},
},
agentsID: [
{
type: moongose.Schema.Types.ObjectId,
ref: "Agent",
},
],
role: {
type: String,
default: "ADMIN",
},
});Retorna un arreglo con todos los admins guardados en la base de datos.
[
{
"permissions": {
"crudAgent": true,
"crudAdmin": true
},
"name": "David",
"DNI": "1117598847",
"address": "...",
"phone": "322 548 7898",
"age": 50,
"agentsID": [],
"id": "620fb78e52948f937ec1c313"
}
]Cuando se hace un POST de un Admin no, se nesecita especificar el Agent que tiene a cargo, este se relaciona cuando se crea un Agent y se le pasa como adminID, el id de este.
{
"name": "Dairo",
"dni": "1117531879",
"address": "Calle 22B",
"phone": "322 548 7898",
"password": "password",
"age": 50
}Retorna
{
"name": "Dairo",
"dni": "1117531879",
"address": "Calle 22B",
"phone": "322 548 7898",
"age": 50,
"permissions": {
"crudAgent": true,
"crudAdmin": true
},
"agentsID": [],
"role": "ADMIN",
"id": "62185cdd53f1f620d9812fc8"
}Al hacer un get con "id" a "/api/admins/:id" retorna el admin que coincida con ese ID y adicionalmente trae los detalles de los agentes que tiene a cargo.
{
"permissions": {
"crudAgent": true,
"crudAdmin": true
},
"name": "David",
"DNI": "1117598847",
"address": "...",
"phone": "322 548 7898",
"age": 50,
"agentsID": [],
"id": "620fb78e52948f937ec1c313"
}Borra el admin con el id pasado por parametro de la base de datos.
const propertySchema = new moongose.Schema({
typeProperty: {
type: String,
enum: {
values: ["casa", "apartamento", "local", "finca"],
message: "{VALUE} is not supported",
},
},
date: {
type: Date,
default: Date.now,
},
location: {
city: { type: String, required: true },
neighborhood: { type: String, required: true },
address: { type: String, required: true },
},
images: [String],
state: {
type: String,
enum: {
values: ["available", "unavailable", "reserved"],
message: "{VALUE} is not supported",
},
default: "available",
},
rentalPrice: {
type: Number,
min: 100,
max: 2000,
},
reviews: [
{
type: Schema.Types.ObjectId,
ref: "Review",
},
],
description: {
type: String,
minlength: 10,
},
details: {
area: {
type: Number,
min: 25,
max: 300,
},
rooms: {
type: Number,
min: 1,
max: 20,
},
baths: {
type: Number,
min: 1,
max: 10,
},
garage: Boolean,
},
agentID: {
type: Schema.Types.ObjectId,
ref: "Agent",
},
});Retorna un arreglo con todas las propiedades guardadas en la base de datos.
[
{
"location": {
"city": "Bogota",
"neighborhood": "bosa",
"address": "Cra 2B"
},
"details": {
"area": 10,
"rooms": 1,
"baths": 1,
"garage": true
},
"typeProperty": "casa",
"images": [
"https://assets-global.website-files.com/5f4f67c5950db17954dd4f52/5f5b7ee442f1e5b9fee1c117_hacerse-una-casa.jpeg"
],
"state": "available",
"rentalPrice": 500,
"reviews": [],
"description": "Esta es una casa ubicada en Bogota",
"agentID": "62140409a933fe675f1d0db5",
"date": "2022-02-24T01:19:07.461Z",
"id": "6216dd0b1ad5cc90813e26d5"
},
{
"location": {
"city": "Florencia",
"neighborhood": "La paz",
"address": "Calle 22B"
},
"details": {
"area": 500,
"rooms": 15,
"baths": 12,
"garage": true
},
"typeProperty": "finca",
"images": [
"https://assets-global.website-files.com/5f4f67c5950db17954dd4f52/5f5b7ee442f1e5b9fee1c117_hacerse-una-casa.jpeg"
],
"state": "available",
"rentalPrice": 2000,
"reviews": [],
"description": "Esta es una casa ubicada en Bogota",
"agentID": "62140409a933fe675f1d0db5",
"date": "2022-02-24T01:24:31.824Z",
"id": "6216de4f1ad5cc90813e26d9"
},
{
"location": {
"city": "Buenos aires",
"neighborhood": "no se",
"address": "Calle 22B"
},
"details": {
"area": 100,
"rooms": 5,
"baths": 3,
"garage": false
},
"typeProperty": "local",
"images": [
"https://assets-global.website-files.com/5f4f67c5950db17954dd4f52/5f5b7ee442f1e5b9fee1c117_hacerse-una-casa.jpeg"
],
"state": "available",
"rentalPrice": 5000,
"reviews": [],
"description": "Esta es una casa ubicada en Bogota",
"agentID": "62140409a933fe675f1d0db5",
"date": "2022-02-24T01:25:19.697Z",
"id": "6216de7f1ad5cc90813e26dd"
}
]GET a "/api/properties/?detailsReviews=true" retorna un arreglo con todas las propiedades guardadas en la base de datos y ademas con los detalles de las reviews hechas a esta.
[
{
"location": {
"city": "Florencia",
"neighborhood": "La paz",
"address": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "local",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "500",
"reviews": [
{
"user": "Pedro",
"score": 3,
"content": "Regular",
"porpertyID": "62129899cde25ed20f597717",
"date": "2022-02-20T19:39:01.315Z",
"id": "621298d5cde25ed20f59771b"
},
{
"user": "Maria",
"score": 5,
"content": "Regular",
"porpertyID": "62129899cde25ed20f597717",
"date": "2022-02-20T19:39:09.989Z",
"id": "621298ddcde25ed20f59771f"
}
],
"description": "Decripcion del inmueble",
"agentID": "62129850cde25ed20f597711",
"date": "2022-02-20T19:38:01.097Z",
"id": "62129899cde25ed20f597717"
},
{
"location": {
"city": "Bogota",
"neighborhood": "Suba",
"address": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "casa",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "500",
"reviews": [
{
"user": "Dairo",
"score": 5,
"content": "Buena",
"porpertyID": "621298fbcde25ed20f597723",
"date": "2022-02-20T19:40:02.756Z",
"id": "62129912cde25ed20f597727"
}
],
"description": "Decripcion del inmueble",
"agentID": "62129850cde25ed20f597711",
"date": "2022-02-20T19:39:39.178Z",
"id": "621298fbcde25ed20f597723"
}
]Por medio de "body" recibe un objeto con las propiedades requeridas para crear una propiedad, algunas propiedades se inicializan por defecto, como lo son la fecha, y el estado de la propiedad, entre otras. Para crear la propiedad se nesecita un Agente el cual es el encargado de esta, para ello solo nesecitan pasar el id del agente.
{
"typeProperty": "casa", //--> 'casa', 'apartamento', 'local', 'finca'
"location": {
"city": "Bogota",
"neighborhood": "bosa",
"address": "Cra 2B"
},
"images": [
"https://assets-global.website-files.com/5f4f67c5950db17954dd4f52/5f5b7ee442f1e5b9fee1c117_hacerse-una-casa.jpeg"
],
"rentalPrice": 500, //-> min: 100, max: 2000
"description": "Esta es una casa ubicada en Bogota", //--> min 10 characters
"details": {
"area": 10, //--> min: 25, max: 300
"rooms": 1, //--> min: 1, max: 20
"baths": 1, //--> min: 1, max: 10
"garage": true
},
"agentID": "62140409a933fe675f1d0db5"
}Retorna
{
"typeProperty": "casa",
"location": {
"city": "Bogota",
"neighborhood": "bosa",
"address": "Cra 2B"
},
"images": [
"https://assets-global.website-files.com/5f4f67c5950db17954dd4f52/5f5b7ee442f1e5b9fee1c117_hacerse-una-casa.jpeg"
],
"state": "available",
"rentalPrice": 500,
"reviews": [],
"description": "Esta es una casa ubicada en Bogota",
"details": {
"area": 10,
"rooms": 1,
"baths": 1,
"garage": true
},
"agentID": "62140409a933fe675f1d0db5",
"date": "2022-02-24T01:19:07.461Z",
"id": "6216dd0b1ad5cc90813e26d5"
}Al hacer un get con "id" a "/api/properties/:id" retorna la propiedad que coincida con ese ID.
{
"location": {
"city": "Florencia",
"neighborhood": "La paz",
"address": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "local",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "500",
"reviews": [],
"description": "Decripcion del inmueble",
"agentID": "621271c06ec04903d5c20e0f",
"date": "2022-02-20T16:53:32.667Z",
"id": "6212720c6ec04903d5c20e13"
}Al hacer un get con "id" a "/api/properties/:id/?detailsAgent=true" retorna la propiedad que coincida con ese ID y con los detalles del agente que la creo.
{
"location": {
"city": "Florencia",
"neighborhood": "La paz",
"address": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "local",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "500",
"reviews": [],
"description": "Decripcion del inmueble",
"agentID": {
"permissions": {
"crudProperty": true
},
"name": "Dairo",
"dni": "1117531587",
"adress": "Springfield",
"phone": "322 225 4787",
"age": "30",
"properties": ["6212720c6ec04903d5c20e13"],
"id": "621271c06ec04903d5c20e0f"
},
"date": "2022-02-20T16:53:32.667Z",
"id": "6212720c6ec04903d5c20e13"
}Al hacer un get con "id" a "/api/properties/:id/?detailsReviews=true" retorna la propiedad que coincida con ese ID y con los detalles de las reviews hechas a esta propiedad.
{
"location": {
"city": "Florencia",
"neighborhood": "La paz",
"address": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "local",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "500",
"reviews": [
{
"user": "Dairo",
"score": 4,
"content": "No esta Mal",
"porpertyID": "6212720c6ec04903d5c20e13",
"date": "2022-02-20T17:00:28.778Z",
"id": "621273ac6ec04903d5c20e1c"
},
{
"user": "Pedro",
"score": 3,
"content": "Regular",
"porpertyID": "6212720c6ec04903d5c20e13",
"date": "2022-02-20T17:01:54.328Z",
"id": "621274026ec04903d5c20e20"
}
],
"description": "Decripcion del inmueble",
"agentID": "621271c06ec04903d5c20e0f",
"date": "2022-02-20T16:53:32.667Z",
"id": "6212720c6ec04903d5c20e13"
}Al hacer un get con "id" a "/api/properties/:id/?detailsReviews=true&detailsAgent=true" retorna la propiedad que coincida con ese ID y con los detalles de las reviews hechas a esta propiedad y ademas los detalles del agente.
{
"location": {
"city": "Florencia",
"neighborhood": "La paz",
"address": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "local",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "500",
"reviews": [
{
"user": "Dairo",
"score": 4,
"content": "No esta Mal",
"porpertyID": "6212720c6ec04903d5c20e13",
"date": "2022-02-20T17:00:28.778Z",
"id": "621273ac6ec04903d5c20e1c"
},
{
"user": "Pedro",
"score": 3,
"content": "Regular",
"porpertyID": "6212720c6ec04903d5c20e13",
"date": "2022-02-20T17:01:54.328Z",
"id": "621274026ec04903d5c20e20"
}
],
"description": "Decripcion del inmueble",
"agentID": {
"permissions": {
"crudProperty": true
},
"name": "Dairo",
"dni": "1117531587",
"adress": "Springfield",
"phone": "322 225 4787",
"age": "30",
"properties": ["6212720c6ec04903d5c20e13"],
"id": "621271c06ec04903d5c20e0f"
},
"date": "2022-02-20T16:53:32.667Z",
"id": "6212720c6ec04903d5c20e13"
}Para hacer un put deverian hacer primero un get al la propiedad que desean modificar con "/api/properties/:id" sin ninguna "query", enviar el objeto completo con las propiedades que cambiaron.
{
"location": {
"city": "Florencia",
"neighborhood": "La paz",
"address": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "local",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "500",
"reviews": ["621273ac6ec04903d5c20e1c", "621274026ec04903d5c20e20"],
"description": "Decripcion del inmueble",
"agentID": "621271c06ec04903d5c20e0f",
"date": "2022-02-20T16:53:32.667Z",
"id": "6212720c6ec04903d5c20e13"
}Por ejemplo desean cambiar el "rentalPrice", el axios le devolveria ya un objeto de "javascript".
const propertyReturned = {
...property,
rentalPrice: "700",
};Esto retornaria el siguiente Objeto.
{
"location": {
"city": "Florencia",
"neighborhood": "La paz",
"address": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "local",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "700",
"reviews": ["621273ac6ec04903d5c20e1c", "621274026ec04903d5c20e20"],
"description": "Decripcion del inmueble",
"agentID": "621271c06ec04903d5c20e0f",
"date": "2022-02-20T16:53:32.667Z",
"id": "6212720c6ec04903d5c20e13"
}Borra la propiedad con el id pasado por parametro de la base de datos y quita la referencia a esta en el agent.
const reviewSchema = new moongose.Schema({
user: {
type: String,
},
score: {
type: Number,
min: 0,
max: 5,
},
content: {
type: String,
required: true,
},
porpertyID: {
type: moongose.Schema.Types.ObjectId,
ref: "Property",
},
date: {
type: Date,
default: Date.now,
},
});Retorna un arreglo con todas las reviews de todas las propiedades.
[
{
"user": "Pedro",
"score": 3,
"content": "Regular",
"porpertyID": "62129899cde25ed20f597717",
"date": "2022-02-20T19:39:01.315Z",
"id": "621298d5cde25ed20f59771b"
},
{
"user": "Maria",
"score": 5,
"content": "Regular",
"porpertyID": "62129899cde25ed20f597717",
"date": "2022-02-20T19:39:09.989Z",
"id": "621298ddcde25ed20f59771f"
},
{
"user": "Dairo",
"score": 5,
"content": "Buena",
"porpertyID": "621298fbcde25ed20f597723",
"date": "2022-02-20T19:40:02.756Z",
"id": "62129912cde25ed20f597727"
}
]Retorna la review especifica de una propiedad.
{
"user": "Pedro",
"score": 3,
"content": "Regular",
"porpertyID": "62129899cde25ed20f597717",
"date": "2022-02-20T19:39:01.315Z",
"id": "621298d5cde25ed20f59771b"
}Si le agrega a la ruta la "query", "/api/reviews/:id/?detailsProperty=true" esta devulve la review y la propiedad a la que se le hizo.
{
"user": "Pedro",
"score": 3,
"content": "Regular",
"porpertyID": {
"location": {
"city": "Florencia",
"neighborhood": "La paz",
"address": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "local",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "500",
"reviews": ["621298d5cde25ed20f59771b", "621298ddcde25ed20f59771f"],
"description": "Decripcion del inmueble",
"agentID": "62129850cde25ed20f597711",
"date": "2022-02-20T19:38:01.097Z",
"id": "62129899cde25ed20f597717"
},
"date": "2022-02-20T19:39:01.315Z",
"id": "621298d5cde25ed20f59771b"
}{
"user": "Dairo",
"content": "Buena",
"score": 5,
"porpertyID": "621298fbcde25ed20f597723"
}
"retorna el siguiente Object"
{
"user": "Dairo",
"score": 5,
"content": "Buena",
"porpertyID": "621298fbcde25ed20f597723",
"date": "2022-02-20T19:40:02.756Z",
"id": "62129912cde25ed20f597727"
}Borra la review a la que hace referencia el id.
const agentSchema = new Schema({
name: {
type: String,
required: true,
},
dni: {
type: String,
required: true,
unique: true,
},
address: {
type: String,
required: true,
},
phone: String,
age: String,
properties: [
{
type: Schema.Types.ObjectID,
ref: "Property",
},
],
permissions: {
crudProperty: Boolean,
},
admindID: {
type: Schema.Types.ObjectID,
ref: "Admin",
},
});Cuando pasa una ruta desconocida para el "Servidor"
response.status(404).send({ error: "unknown endpoint" });Cuando pasas un "id" no valido va a retornar
response.status(400).send({ error: "malformatted id" });Cuando ocurre un error al hacer un PUT o POST con el Schema va a retornar un message relacionado con el error.
response.status(400).json({ error: error.message });
Retorna un arreglo con todas los agentes guardados en la base de datos y su relacion con una propiedad
{
"permissions": {
"crudProperty": true
},
"name": "David",
"dni": "1012437698",
"address": "Direccion random en bucaramanga",
"phone": "98565621",
"age": "22",
"properties": [
"620e82d3a72c0b07f4a80ae3" // --> Relacion
],
"id": "620e808a8034ceb08eb309a8"
}Retorna un JSON con la informacion completa de un agente guardado en la base de datos y su relacion con una propiedad (Muestra la info completa de esa propiedad)
{
"permissions": {
"crudProperty": true
},
"name": "David",
"dni": "1012437698",
"address": "Direccion random en bucaramanga",
"phone": "98565621",
"age": "22",
"properties": [
// -----> Info completa de esa propiedad
{
"ubication": {
"city": "Bogota",
"neighbourhooh": "usme",
"adress": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "casa",
"images": ["url", "url1"],
"state": "available",
"rentalPrice": "500",
"description": "Decripcion del inmueble",
"agentID": "620e808a8034ceb08eb309a8",
"date": "2022-02-17T17:16:03.063Z",
"reviews": [],
"id": "620e82d3a72c0b07f4a80ae3"
}
],
"id": "620e808a8034ceb08eb309a8"
}Por medio de "body" recibe un objeto con las propiedades requeridas para crear un agente
{
adminID: "620e806162c266edbeaca6f7", // ----> Se debe pasar el id del admin (RELACION)
dni: "1075982698",
name: "Gabriel",
address: "Springfield",
phone: "7591546",
age: "30",
permissions: {
crudProperty: true
}
}
...
...
"JSON retornado al hacer este post"
{
"name": "Gabriel",
"dni": "1075982698",
"address": "Springfield",
"phone": "7591546",
"age": "30",
"properties": [],
"permissions": {
"crudProperty": true
},
"id": "620ed23cd2696158e8b89619"
}{
"name": "David" // Aca solo quiero actualizar el nombre del agente
}Borra el agente con el id pasado por parametros.
const clientSchema = new Schema({
name: {
type: String,
required: true,
},
dni: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
address: {
type: String,
required: true,
},
phone: String,
age: String,
permissions: {
crudClient: Boolean,
},
payDay: String,
paymentIssued: [
{
date: {
type: Date,
default: Date.now,
},
},
],
propertyID: {
type: Schema.Types.ObjectId,
ref: "Property",
},
});Cuando pasa una ruta desconocida para el "Servidor"
response.status(404).send({ error: "unknown endpoint" });Cuando pasas un "id" no valido va a retornar
response.status(400).send({ error: "malformatted id" });Cuando ocurre un error al hacer un PUT o POST con el Schema va a retornar un message relacionado con el error.
response.status(400).json({ error: error.message });Cuando no se envia el token, para hacer un update o delete de un cliente.
{
"name": "JsonWebTokenError",
"message": "jwt must be provided" <-------------
}Retorna un arreglo con todas los clientes guardados en la base de datos y su relacion con una propiedad (propertyID)
{
"permissions": {
"crudClient": true
},
"name": "Alexander",
"dni": "1012312432",
"adress": "Direccion random en Medellin",
"phone": "3194785677",
"age": "29",
"payDay": "16/02/2022",
"paymentIssued": [
{
"_id": "620ea3ef1e94bd784df9d473",
"date": "2022-02-17T19:37:19.985Z"
}
],
"propertyID": "620e82348c77394d2ef5f506", ----> Relacion
"id": "620ea3ef1e94bd784df9d472"
}Retorna un JSON con la informacion completa del cliente en la base de datos y su relacion con una propiedad (Muestra la info completa de esa propiedad)
{
"permissions": {
"crudClient": true
},
"name": "Alexander",
"dni": "1012312432",
"adress": "Direccion random en Medellin",
"phone": "3194785677",
"age": "29",
"payDay": "16/02/2022",
"paymentIssued": [
{
"_id": "620ea3ef1e94bd784df9d473",
"date": "2022-02-17T19:37:19.985Z"
}
],
"propertyID": { ------> Info completa de la relacion
"ubication": {
"city": "Bogota",
"neighbourhooh": "usme",
"adress": "Cll 22B etc..."
},
"details": {
"area": "30",
"rooms": "2",
"baths": "2",
"garage": true
},
"typeProperty": "casa",
"images": [
"url",
"url1"
],
"state": "available",
"rentalPrice": "500",
"description": "Decripcion del inmueble",
"agentID": "620e808a8034ceb08eb309a8",
"date": "2022-02-17T17:13:24.958Z",
"reviews": [],
"id": "620e82348c77394d2ef5f506"
},
"id": "620ea3ef1e94bd784df9d472"
}Por medio de "body" recibe un objeto con las propiedades requeridas para crear un cliente
{
"name": "Mauricio",
"dni": "39641178",
"password": "miClaveSegurita",
"address": "Direccion random en Colombia",
"phone": "3194785623",
"age": "28"
}
...
...
"JSON retornado al hacer este post"
{
"name": "Mauricio",
"dni": "39641178",
"address": "Direccion random en Colombia",
"phone": "3194785623",
"age": "28",
"paymentIssued": [],
"id": "621028e3a791a20727b27883"
}Por medio de "body" recibe un objeto con los datos que se quieren actualizar del cliente. Sin el token, no se puede actualizar la info del cliente.
{
"propertyID": "620e811562c266edbeaca6fd", --------> Si quiero hacer una relacion (Si quiero asignarle una propiedad al cliente). No es obligatorio enviarla
"address": "Direccion random en Bogota",
"phone": "3194785677",
"age": "30",
"payDay": "17"
}
...
...
"JSON retornado al hacer el PUT"
{
"name": "Mauricio",
"dni": "39641178",
"address": "Direccion random en Bogota",
"phone": "3194785677",
"age": "30",
"paymentIssued": [],
"payDay": "17",
"propertyID": "620e811562c266edbeaca6fd", ---------> Relacion hecha
"id": "621028e3a791a20727b27883"
}Borra el cliente con el id pasado por parametros. Sin el token, no se puede eliminar un cliente.