Skip to content

Latest commit

 

History

History
828 lines (641 loc) · 17.1 KB

Documentation.md

File metadata and controls

828 lines (641 loc) · 17.1 KB

HealthyDev Backend Documentación

GET “{{URL}}/v1/cards”

Muestra por defecto las últimas 15 cards creadas.

Parámetros:

Enviados por URL

- offset: número desde que registro el get trae las cards, (Opcional, por defecto 0 )

- limit: límite de cantidad de cards que trae el endpoint (Opcional, por defecto 15)

- creatorId: id de usuario creador de la card (Opcional)

- categoryId: id de la categoría de la card (Opcional)

- search: texto para buscar cards que contenga en title o description la cadena enviada (Opcional)

- expand: listado de posibles expansiones del recurso separados por coma (Opcional, posibles valores: category,creator,likes)

    Nota: Considerando paginación o infinite scroll, definimos de cuantos registros queremos solicitar (limit por defecto 15) y tenemos un número de página (page), entonces el offset =  page * limit, si se inicia desde nroPagina = 0.

Respuesta:

Array de objetos, donde cada objeto devuelve:

{
    id: id de la card,
    title: título de la card,
    photo: url de la imagen subida
}
Nota: Si incluye expand en los parámetros, incluira la expansión solicitada

Ejemplo:

fetch(
      “https://healthydev.herokuapp.com/v1/cards?offset=2&limit=50&search=TEST&expand=creator,likes”,
      {
        method: “GET”,
      },
)
.then(“// Manejo de Respuesta”);

GET “{{URL}}/v1/cards/:id”

Muestra la card específica que se busca de acuerdo el id pasado como parámetro.

Parámetros:

Enviado por URL

- id: id de la card que se necesita mostrar (Obligatorio), reemplaza a “:id”

Respuesta:

{
    card: {
        id: id de la card,
        title: título de la card,
        description: descripción de la card,
        photo: url de la imagen subida,
        externalUrl: url de una web externa a la api y a la app,
        category: categoría de la card,
        createdAt: fecha hora de creación,
        updatedAt: fecha hora de modificación,
        creator: {
            id: id de usuario creador,
            name: nombre de usuario creador,
            profilePhoto: url de la foto de perfil del creador
        },
        category: {
            id: id de la categoría,
            name: nombre de la categoría,
        },
        likedBy: [
            {
                userId: 4,
                userName: test15
            },
            {
                userId: 6,
                userName: test10
            }
        ],
        likesCount: 2
    }
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/cards/1”,
    {
        method: “GET”,
    },
)
.then(“// Manejo de Respuesta”);

POST “{{URL}}/v1/cards”

Crea una card.

Body:

{
    title: título de la card a crear (Obligatorio),
    description: descripción de la card a crear (Obligatorio),
    photo: imagen en string-base64 (Opcional, si no es subida ninguna imagen se   mostrará una imagen placeholder precargada),
    externalUrl: url de web externa a la app y a la api (Opcional)
    categoryId: id de la categoría de la card (Obligatorio)
}

Respuesta:

{
    id: id de la card creada
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/cards”,
    {
        method: “POST”,
        headers:{
                “Content-Type“: “aplication/json“,
                “Authorization“: “Bearer {{userToken}}“
        },
        body: JSON.stringify(
            {
                “title“: “Comida Healthy”,
                “description”: “Recetas para cocinar sano en época de cuarentena”,
                “photo”: “ // imagen subida desde la app, en string-base64 “,
                “externalUrl”: “ https://www.youtube.com/watch?v=7J8PYSgi8N8 ”,
                “categoryId”: 1
            }
        )
    },
)
.then(“// Manejo de Respuesta”);

PUT “{{URL}}/v1/cards/:id”

Modifica una card.

Body:

{
    title: título de la card a crear (Opcional),
    description: descripción de la card a crear (Opcional),
    photo: imagen en string-base64 (Opcional),
    externalUrl: url de web externa a la app y a la api (Opcional)
    categoryId: id de la categoría de la card (Opcional)
}

Respuesta:

{
    id: id de la card,
    title: título de la card,
    description: descripción de la card,
    photo: url de la imagen subida,
    externalUrl: url de una web externa a la api y a la app,
    createdAt: fecha hora de creación,
    updatedAt: fecha hora de modificación,
    creator: {
        id: id de usuario creador,
        name: nombre de usuario creador,
        profilePhoto: url de la foto de perfil del creador
    }
    category: {
        id: id de la categoría,
        name: nombre de la categoría,
    }
    likesCount: cantidad de likes de la card

}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/cards/1”,
    {
        method: PUT,
        headers:{
                “Content-Type“: “aplication/json“,
                “Authorization“: “Bearer {{userToken}}“
        },
        body: JSON.stringify(
            {
                “title“: “Comida Healthy”,
                “description”: “Recetas para cocinar sano en época de cuarentena”,
                “photo”: “http://res.cloudinary.com/du7xgj6ms/image/upload/v1599004796/placeholder.jpg”,
                “externalUrl”: “https://www.youtube.com/watch?v=7J8PYSgi8N8”,
                “categoryId”: 1
            }
        )
    },
)
.then(“// Manejo de Respuesta”);

DELETE “{{URL}}/v1/cards/:id”

Elimina una card.

Parámetros:

Enviado por URL

- id: id de la card que se necesita eliminar (Obligatorio), reemplaza a “:id”

Respuesta:

{
    message: “La Card con el id: 100 fue eliminada con éxito.“
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/cards/100”,
    {
        method: DELETE,
        headers:{
            “Content-Type“: “aplication/json“,
            “Authorization“: “Bearer {{userToken}}“
        },
    },
)
.then(“// Manejo de Respuesta”);

POST “{{URL}}/v1/cards/:id/like”

Agrega un like.

Parámetros:

Enviado por URL

- id: id de la card que se necesita mostrar (Obligatorio), reemplaza a “:id”

Respuesta:

{
    message: ¡Me gusta!
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/cards/1/like”,
    {
        method: POST,
        headers:{
            “Content-Type“: “aplication/json“,
            “Authorization“: “Bearer {{userToken}}“
        },
    },
)
.then(“// Manejo de Respuesta”);

DELETE “{{URL}}/v1/cards/:id/like”

Elimina un like.

Parámetros:

Enviado por URL

- id: id de la card que se necesita mostrar (Obligatorio), reemplaza a “:id”

Respuesta:

{
    message: “¡No me gusta más!“
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/cards/1/like”,
    {
        method: DELETE,
        headers:{
            “Content-Type“: “aplication/json“,
            “Authorization“: “Bearer {{userToken}}“
        },
    },
)
.then(“// Manejo de Respuesta”);

GET “{{URL}}/v1/cards/categories”

Muestra las categorías de las cards

Respuesta:

[
    {
        id: 1,
        name: categoria1
    },
    {
        id: 2,
        name: categoria2
    }
]

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/cards/categories”,
    {
        method: “GET”,
    },
)
.then(“// Manejo de Respuesta”);

POST “{{URL}}/v1/auth/signup”

Registra un nuevo usuario

Body:

{
    username: nombre de usuario (Obligatorio - 4 a 20 caracteres - comienza con una letra, puede contener letras y números, y punto, guion medio, guion bajo en medio.)
    email: email asociado a cuenta (Obligatorio - formato de email válido),
    password: contraseña (Obligatorio - al menos una mayúscula, una minúscula y un número, sin espacios -  8 a 250 caracteres),
}

Respuesta:

{
    accessToken: jwtToken (payload username)
}

Nota: También envia email de verificación de cuenta para activar usuario.

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/auth/signup”,
    {
        method: “POST”,
        headers:{
                “Content-Type“: “application/json“
        },
        body: JSON.stringify(
            {
                “username“: “juani24”,
                “email”: “juanperez@gmail.com”,
                “password”: “ SuperPass21“
            }
        )
    },
)
.then(“// Manejo de Respuesta”);

GET “{{URL}}/v1/auth/resend-verification/:email”

Reenvio de email de verificación de cuenta para activar usuario.

Parámetros:

Enviado por URL

- email: email asociado a cuenta (Obligatorio - formato de email válido),

Respuesta:

{
    message: “Healthy Dev le informa que se ha reenviado el email de verificación correctamente”
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/auth/resend-verification/juanperez@gmail.com”,
    {
        method: “GET”,
        headers:{
                'Content-Type': 'application/json',
        },
    },
)
.then(“// Manejo de Respuesta”);

POST “{{URL}}/v1/auth/verify”

Verificación de cuenta de email para activar usuario.

Body: Parámetros:

Enviados por URL

- token: token encriptado previamente enviado por email para activar usuario (Obligatorio)

Respuesta:

{
    message: “Healthy Dev le informa que el usuario fue activado correctamente.”
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/auth/verify/?token=xxxxxxxxxxxxxxxx”,
    {
        method: “POST”,
        headers:{
                'Content-Type': 'application/json',
        },
    },
)
.then(“// Manejo de Respuesta”);

POST “{{URL}}/v1/auth/signin”

Loguearse usuario registrado, puede hacerlo por el username o email.

Body:

{
    usernameOrEmail: nombre de usuario o email asociado a cuenta (Obligatorio - 4 a 100 caracteres)
    password: contraseña (Obligatorio - al menos una mayúscula, una minúscula y un número, sin espacios - 8 a 250 caracteres),
}

Respuesta:

{
    accessToken: jwtToken (payload username)
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/auth/sigin”,
    {
        method: “POST”,
        headers:{
                “Content-Type“: “application/json“
        },
        body: JSON.stringify(
            {
                “usernameOrEmail“: “juani24”,
                “password”: “ SuperPass21“
            }
        )
    },
)
.then(“// Manejo de Respuesta”);

GET “{{URL}}/v1/users/me”

Muestra los datos del usuario actual

Respuesta:

{
    "id": id de usuario,
    "email": email de usuario,
    "username": username usuario,
    "name": nombre real del usuario,
    "profilePhoto": foto de perfil usuario,
    "twitter": cuenta de twitter,
    "instagram": cuenta de instagram,
    "status": estado de la cuenta,
    "role": rol de usuario
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/users/me”,
    {
        method: GET,
        headers:{
                “Content-Type“: “application/json“,
                “Authorization“: “Bearer {{userToken}}“,
        },
    },
)
.then(“// Manejo de Respuesta”);

PUT “{{URL}}/v1/users/me”

Modificación datos usuario

Body:

{
    name: nombre real (Opcional),
    profilePhoto: foto de perfil - imagen en string-base64 (Opcional),
    twitter: cuenta de twitter (Opcional),
    instagram: cuenta de instagram (Opcional)
}

Respuesta:

{
    message: “Usuario modificado con exito”
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/users/me”,
    {
        method: “PUT”,
        headers:{
                'Content-Type': 'application/json',
                'Authorization': 'Bearer {{userToken}}',
        },
        body: JSON.stringify(
            {
                “name”: “ Juan Lopez“
                “profilePhoto”:  imagen en string-base64
                “twitter”: “@juan”
                “instagram”: “@juan”
            }
        )
    },
)
.then(“// Manejo de Respuesta”);

GET “{{URL}}/v1/users/:id”

Devuelve el user con el id pasado como parámetro.

Parámetros:

id: id del user que se necesita mostrar (Obligatorio), se pasa en la url, reemplaza a “:id”

Respuesta:

Objeto del user:

{
    "id": id,
    "name": Test Healthy,
    "profilePhoto": "http://res.cloudinary.com/du7xgj6ms/image/upload/v1599004796/placeholder.jpg"
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/users/1”,
    {
        method: “GET”,
    },
)
.then(“// Manejo de Respuesta”);

DELETE “{{URL}}/v1/users/”

Eliminación de cuenta por opción de verificación de cuenta de email para activar usuario.

Parámetros:

Enviados por URL

- token: token encriptado previamente enviado por email para activar usuario en caso de que no lo hubiera solicitado (Obligatorio)

Respuesta:

{
    message: “Healthy Dev le informa que el usuario ha sido eliminado”
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/users/?token=xxxxxxxxxxxxxxxx”,
    {
        method: “DELETE”,
        headers:{
                'Content-Type': 'application/json',
        },
    },
)
.then(“// Manejo de Respuesta”);

POST “{{URL}}/v1/auth/new-password”

Cambiar contraseña de usuario actual

Nota: El cambio de contraseña invalidará todos los tokens generados previos al cambio.

Body:

{
    password: contraseña (Obligatorio - al menos una mayúscula, una minúscula y un número, sin espacios - 8 a 250 caracteres),
}

Respuesta:

{
    message: “Contraseña Cambiada con éxito.”
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/auth/new-password”,
    {
        method: “POST”,
        headers:{
                'Content-Type': 'application/json',
                'Authorization': 'Bearer {{userToken}}',
        },
        body: JSON.stringify(
            {
            “password”: “ SuperPass21“
            }
        )
    },
)
.then(“// Manejo de Respuesta”);

GET “{{URL}}/v1/auth/facebook

Login con facebok, al llamar a esta url se redireccionara a facebook para loguearse con la cuenta de facebook y luego a una screen del frontend con el token como parametro

Respuesta:

Redireccionara a una screen del frontend con el token como parametro

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/auth/facebook,
    {
        method: GET,
    },
)
.then(“// Manejo de Respuesta”);

GET “{{URL}}/v1/auth/forgot-password/:email”

Envio de email crear nueva contraseña usuario.

Parámetros:

Enviado por URL

- email: email asociado a cuenta (Obligatorio - formato de email válido),

Respuesta:

{
    message: “Healthy Dev le informa que se ha enviado el email para crear nueva contraseña correctamente”
}

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/auth/forgot-password/juanperez@gmail.com”,
    {
        method: “GET”,
        headers:{
                'Content-Type': 'application/json',
        },
    },
)
.then(“// Manejo de Respuesta”);

GET “{{URL}}/v1/auth/google

Login con google, al llamar a esta url se redireccionara a google para loguearse con la cuenta de google y luego a una screen del frontend con el token como parametro

Respuesta:

Redireccionara a una screen del frontend con el token como parametro

Ejemplo:

fetch(
    “https://healthydev.herokuapp.com/v1/auth/google”,
    {
        method: GET,
        headers:{
            'Content-Type': 'application/json',
        },
    },
)
.then(“// Manejo de Respuesta”);

POST “{{URL}}/v1/auth/reset-password”

Cambiar contraseña de usuario solicitada por email

Nota: El cambio de contraseña invalidará todos los tokens generados previos al cambio.

Body:

{
    password: contraseña (Obligatorio - al menos una mayúscula, una minúscula y un número, sin espacios - 8 a 250 caracteres),
}

Parámetros:

Enviados por URL

- token: token encriptado previamente enviado por email para crear nueva contraseña (Obligatorio)

Respuesta:

{
    message: “Contraseña Cambiada con éxito.”
}

Ejemplo:

fetch(

    “https://healthydev.herokuapp.com/v1/auth/reset-password/?token=xxxxxxxxxxxxxxxx”,
    {
        method: “POST”,
        headers:{
                'Content-Type': 'application/json',
        },
        body: JSON.stringify(
            {
            “password”: “SuperPass21“
            }
        )
     },
)
.then(“// Manejo de Respuesta”);