/caps-node-spot

Capstone q4

Primary LanguageTypeScript

Pollutants Recycling


Rotas


Users

Cadastro de usuários

POST /users - FORMATO DA REQUISIÇÃO

{
  "name": "José",
  "email": "josé@email.com",
  "password": "senhaForte",
  "address": {
    "zipCode": "11020325",
    "number": 736,
    "complement": "Apt 121" 
  }
}

Em caso de sucesso, a resposta será:

POST /users - FORMATO DA RESPOSTA - STATUS 201

{
  "userId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
  "name": "José",
  "email": "josé@email.com",
  "address":{
    "address_id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "zipCode": "11020325",
    "street": "AV. Afonso Pena",
    "number": 736,
    "complement": "Apt 121",
    "city": "Santos",
    "state": "SP",
    "isDumpSpot": false
  }
}



Login de usuários

POST /login - FORMATO DA REQUISIÇÃO

{
  "email": "josé@email.com",
  "password": "senhaForte"
}

Em caso de sucesso, a resposta será:

POST /login - FORMATO DA RESPOSTA - STATUS 200

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImU0NWFiMTBkLTJmZjUtNDRmYy1hMzM0LWQ3ZGZkMzk4OTJiYiIsImlhdCI6MTY1Mzc2MDMzNywiZXhwIjoxNjUzNzYzOTM3fQ.ECH1rK8WvGkzY2ghEP5TJW4ZD8cOjeGfyvgSwn9ZAfs"
}



Busca de todos os usuários

GET /users - NO BODY

Bearer Token Required

Em caso de sucesso, a resposta será:

GET /users - FORMATO DA RESPOSTA - STATUS 200

{
    "users":[
        {
          "userId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
          "name": "José",
          "email": "josé@email.com",
          "address":{
            "addressId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
            "zipCode": "11020325",
            "street": "AV. Afonso Pena",
            "number": 736,
            "complement": "Apt 121",
            "city": "Santos",
            "state": "SP",
            "isDumpSpot": false
          }
        },
        {
          "userId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
          "name": "Gustavo",
          "email": "gustavo3@email.com",
          "address":{
            "addressId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
            "zipCode": "91350160",
            "street": "Rua Guilherme Klippel",,
            "number": 305,
            "complement": "casas",
            "city": "Porto Alegre",
            "state": "RS",
            "isDumpSpot": false
          }
        }
    ]
}



Busca de um usuário

GET /users/:id - NO BODY

Bearer Token Required

Em caso de sucesso, a resposta será:

GET /users/:id - FORMATO DA RESPOSTA - STATUS 200

{
  "userId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
  "name": "José",
  "email": "josé@email.com",
  "address":{
    "address_id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "zipCode": "11020325",
    "street": "AV. Afonso Pena",
    "number": 736,
    "complement": "Apt 121",
    "city": "Santos",
    "state": "SP",
    "isDumpSpot": false
  }
}



Atualização de usuários

PATCH /users/:id - FORMATO DA REQUISIÇÃO

Bearer Token Required

{
  "name": "José Carlos",
  "number": 732,
  "complement": "Apt 42"
}

Em caso de sucesso, a resposta será:

PATCH /users/:id - FORMATO DA RESPOSTA - STATUS 200

{
  "userId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
  "name": "José Carlos",
  "email": "josé@email.com",
  "address":{
    "address_id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "zipCode": "11020325",
    "street": "AV. Afonso Pena",
    "number": 732,
    "complement": "Apt 42",
    "city": "Santos",
    "state": "SP",
    "isDumpSpot": false
  }
}



Remoção de usuários

DELETE /users/:id - NO BODY

Bearer Token Required

Em caso de sucesso, a resposta será:

DELETE /users/:id - FORMATO DA RESPOSTA - STATUS 204

{
  "message": "user successfully deleted""
}



Categories

Cadastro de categorias

POST /categories - FORMATO DA REQUISIÇÃO

Bearer Token Required

{
  "name": "Óleo",
  "unit": "Litros",
  "description": "Óleo de cozinha usado",
}

Em caso de sucesso, a resposta será:

POST /categories - FORMATO DA RESPOSTA - STATUS 201

{
  "id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
  "name": "Óleo",
  "unit": "Litros",
  "description": "Óleo de cozinha usado",
}



Busca de todoas as categorias

GET /categories - NO BODY

Bearer Token Required

Em caso de sucesso, a resposta será:

GET /categories - FORMATO DA RESPOSTA - STATUS 200

{
    "categories":[
        {
            "id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
            "name": "Óleo",
            "unit": "Litros",
            "description": "Óleo de cozinha usado",
        },
        {
            "id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
            "name": "Eletrônico",
            "unit": "Quilos",
            "description": "Equipmentos eletrônicos quebrados ou inutilizados",
        },
        {
            "id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
            "name": "Remédios",
            "unit": "Caixas",
            "description": "Descarte de remédios vencidos ou sem uso",
        }
    ]
}



Busca de uma categoria

GET /categories/:name - NO BODY

Bearer Token Required

Em caso de sucesso, a resposta será:

GET /categories/:name - FORMATO DA RESPOSTA - STATUS 200

{
    "id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "name": "Remédios",
    "unit": "Caixas",
    "description": "Descarte de remédios vencidos ou sem uso",
}



Itens

Cadastro de item

Bearer Token Required

POST /items - FORMATO DA REQUISIÇÃO

{
  "name": "Garrafa de óleo",
  "description": "Garrafa de óleo usado",
  "quantity": "3 Litros",
  "category": "Óleo" 
}

Em caso de sucesso, a resposta será:

POST /items - FORMATO DA RESPOSTA - STATUS 201

{
  "itemId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
  "name": "Garrafa de óleo",
  "description": "Garrafa de óleo usado",
  "quantity": "3 Litros",
  "category": {
    "id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "name": "Óleo",
    "unit": "Litros",
    "description": "Óleo de cozinha usado",
    } 
}



Busca de um item

GET /items/:id - NO BODY

Bearer Token Required

Em caso de sucesso, a resposta será:

GET /items/:id - FORMATO DA RESPOSTA - STATUS 200

{
  "itemId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
  "name": "Garrafa de óleo",
  "description": "Garrafa de óleo usado",
  "quantity": "3 Litros",
  "category": {
    "id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "name": "Óleo",
    "unit": "Litros",
    "description": "Óleo de cozinha usado",
    } 
}



Atualização de itens

PATCH /items/:id - FORMATO DA REQUISIÇÃO

Bearer Token Required

{
  "name": "Galão de óleo",
  "description": "Galão de óleo usado",
}

Em caso de sucesso, a resposta será:

PATCH /items/:id - FORMATO DA RESPOSTA - STATUS 200

{
  "itemId": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
  "name": "Galão de óleo",
  "description": "Galão de óleo usado",
  "quantity": "3 Litros",
  "category": {
    "id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "name": "Óleo",
    "unit": "Litros",
    "description": "Óleo de cozinha usado",
    } 
}



Remoção de items

DELETE /items/:id - NO BODY

Bearer Token Required

Em caso de sucesso, a resposta será:

DELETE /items/:id - FORMATO DA RESPOSTA - STATUS 204

{
    "message": "item successfully deleted""
}



DumpSpot

Cadastro de pontos de coleta

Bearer Token Required

POST /dumpSpot - FORMATO DA REQUISIÇÃO

{
  "name": "ONG NatureLive",
  "zipCode": "11020004",
	"address": {
		"number": 726,
  	"complement": "Apt 31",
    "isDumpSpot": true
	} 
}

Em caso de sucesso, a resposta será:

POST /dumpSpot - FORMATO DA RESPOSTA - STATUS 201

{
  "dumpSpot_id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
  "name": "ONG NatureLive",
  "address":{
    "address_id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "zipCode": "11020004",
    "street": "AV. Afonso Pena",
    "number": 736,
    "complement": "Apt 31",
    "latitude": -23.976815351036432,
    "longitude": -46.297928631145886,
    "isDumpSpot": true
  }
}



Busca de um ponto de coleta

GET /dumpSpot/:dumpSpot_id - NO BODY

Bearer Token Required

Em caso de sucesso, a resposta será:

GET /dumpSpot/:dumpSpot_id - FORMATO DA RESPOSTA - STATUS 200

{
    "dumpSpot_id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "name": "ONG NatureLive",
    "address":{
        "address_id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
        "zipCode": "11020325",
        "street": "AV. Afonso Pena",
        "number": 736,
        "complement": "Apt 121",
        "latitude": -23.976815351036432,
        "longitude": -46.297928631145886,
        "isDumpSpot": true
    }
}



Atualização de um ponto de coleta

PATCH /dumpSpot/:dumpSpot_id - FORMATO DA REQUISIÇÃO

Bearer Token Required

{
  "name": "ONG NatLive"
}

Em caso de sucesso, a resposta será:

PATCH /dumpSpot/:dumpSpot_id - FORMATO DA RESPOSTA - STATUS 200

{
    "dumpSpot_id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
    "name": "ONG NatLive",
    "address":{
        "address_id": "29788820-4fa9-4d61-bb5c-5b8b5ac9f606",
        "zipCode": "11020325",
        "street": "AV. Afonso Pena",
        "number": 736,
        "complement": "Apt 121",
        "latitude": -23.976815351036432,
        "longitude": -46.297928631145886,
        "isDumpSpot": true
    }
}