+
Skip to content

Pf-python/kenzie_commerce

Repository files navigation

Kenzie Commerce

Proposta:

Este projeto é um e-commerce desenvolvido com Django, um framework em Python, focado na construção do Back-end do sistema. O objetivo do projeto é oferecer um serviço seguro e confiável para a realização de compra e venda de produtos.


[201] Criar usuários

POST - /users/

Essa rota não necessita autenticação bearer token. Campos de envio para request:

  • username: Entrada obrigatória do tipo string e máximo 150 chars.
  • email: Entrada obrigatória do tipo string email e máximo 127 chars.
  • password: Entrada obrigatória do tipo string e máximo 30 chars.
  • address: Entrada obrigatória do tipo dicionario.
  • is_superuser: Entrada opcional do tipo boolean com default false.
  • is_seller: Entrada opcional do tipo boolean com default false.

Retorno esperado com status code 201 para criação realizada com sucesso:

{
    "id": "146c8c8b-fef1-4487-8641-cff3ef748c7a",
    "username": "Mariano Lopes",
    "email": "ml123@gmail.com",    
    "address": {
        "street": "Floriano arroba",
        "distric": "Jardim das flores",
        "zipCode": 12341231,
        "state": "Ba",
        "city": "Jacobina",
        "number": 12,
    },
    "is_seller": False,
    "is_superuser": False,
}

Retorno esperado com status code 400 para request incorreto/vazio:

{
  "username": [
    "This field is required."
  ],
  "email": [
    "This field is required."
  ],
  "password": [
    "This field is required."
  ],
  "address": [
    "This field is required."
  ]
}

Retorno esperado com status code 400 para email/username já existente:

{
  "email": [
    "email already registered."
  ],
  "username": [
    "username already taken."
  ]
}

[200] Listar usuários.

GET -/users/

Essa rota necessita autenticação bearer token sem request body:

Retorno esperado com status code 200 para listagem bem sucedida:

[
    {
        "id": "146c8c8b-fef1-4487-8641-cff3ef748c7a",
        "username": "Mariano Lopes",
        "email": "ml123@gmail.com",    
        "address": {
            "street": "Floriano arroba",
            "distric": "Jardim das flores",
            "zipCode": 12341231,
            "state": "Ba",
            "city": "Jacobina",
            "number": 12,
        },
        "is_seller": False,
        "is_superuser": False,
    },
    {
        "id": "fae43b77-1c12-4fb4-af8e-4fb13fab5e26",
        "username": "Ronaldo Algusto Moreira Alves",
        "email": "ramalves@email.com",
        "address": {
            "street": "Saltante das figueiras",
            "distric": "Oliveiras amarelas",
            "zipCode": 12341231,
            "state": "SP",
            "city": "Guarulhos",
            "number": 14,
        },
        "is_seller": False,
        "is_superuser": False,
    }
]

[200] Listar um usuário específico

GET - /users/:user_id/

Essa rota não necessita autenticação bearer token nem request body, mas é preciso enviar o id do autor como parâmetro:

Retorno esperado com status code 200 para retorno bem sucedido:

    {
        "id": "146c8c8b-fef1-4487-8641-cff3ef748c7a",
        "username": "Mariano Lopes",
        "email": "ml123@gmail.com",    
        "address": {
            "street": "Floriano arroba",
            "distric": "Jardim das flores",
            "zipCode": 12341231,
            "state": "Ba",
            "city": "Jacobina",
            "number": 12,
        },
        "is_seller": False,
        "is_superuser": False,
    },

Retorno esperado com status code 404 para autor inexistente ou não encontrado:

{
    "detail": "User not found"
}

[200] Atualizar um usuário específico

PATCH - /users/:user_id/

Essa rota necessita autenticação bearer token, é preciso enviar o id do usuário como parâmetro:

Retorno esperado com status code 200 para atualização realizada com sucesso:

    {
        "id": "146c8c8b-fef1-4487-8641-cff3ef748c7a",
        "username": "Mariano Lopes",
        "email": "ml123@gmail.com",    
        "address": {
            "street": "Floriano arroba",
            "distric": "Jardim das flores",
            "zipCode": 12341231,
            "state": "Ba",
            "city": "Jacobina",
            "number": 12,
        },
        "is_seller": False,
        "is_superuser": False,
    },

Retorno esperado com status code 404 para usuário inexistente ou não encontrado:

{
    "detail": "User not found"
}

[201] Criar Produtos

POST - /products/

Essa rota necessita autenticação bearer token. Campos de envio para request:

  • name: Entrada obrigatória do tipo string e máximo 50 chars.
  • stock: Entrada obrigatória do tipo number.
  • category: Entrada obrigatória do tipo string e máximo 50 chars.
  • is_active: Entrada opcional do tipo boolean.

Retorno esperado com status code 201 para criação realizada com sucesso:

{
	"id": "009bc657-2704-4593-9c3a-17c2e74f15c1",
	"name": "Coca-cola",
	"stock": 80,
	"category": "Bebidas",
	"is_active": true
}

Retorno esperado com status code 400 para request incorreto/vazio:

{
	"name": [
        "This field is required."
    ],
	"stock": [
        "This field is required."
    ],
	"category": [
        "This field is required."
    ],
}

Retorno esperado com status code 401 para ausência de autenticação por token:

{
	"detail": "Authentication credentials were not provided."
}

Retorno esperado com status code 403 para usuário sem permissão de acesso:

{
	"detail": "You do not have permission to perform this action."
}

[200] Listar Produtos.

GET -/products/

Essa rota necessita autenticação bearer token sem request body:

Retorno esperado com status code 200 para listagem bem sucedida:

[
    {
        "id": "009bc657-2704-4593-9c3a-17c2e74f15c1",
        "name": "Coca-cola",
        "stock": 80,
        "category": "Bebidas",
        "is_active": true
    },
    {
        "id": "5as8f351-2104-4493-9ab23a-123astf15a5",
        "name": "Red bull",
        "stock": 120,
        "category": "Bebidas",
        "is_active": true
    },
]

[200] Listar um produto específico

GET - /products/:product_id/

Essa rota não necessita autenticação bearer token nem request body, mas é preciso enviar o id do usuário como parâmetro:

Retorno esperado com status code 200 para retorno bem sucedido:

    {
        "id": "009bc657-2704-4593-9c3a-17c2e74f15c1",
        "name": "Coca-cola",
        "stock": 80,
        "category": "Bebidas",
        "is_active": true
    },

Retorno esperado com status code 404 para produto inexistente ou não encontrado:

{
    "detail": "Product not found"
}

[200] Atualizar um produto específico

PATCH - /products/:product_id/

Essa rota necessita autenticação bearer token, é preciso enviar o id do usuário como parâmetro:

Retorno esperado com status code 200 para atualização realizada com sucesso:

    {
        "id": "009bc657-2704-4593-9c3a-17c2e74f15c1",
        "name": "Coca-cola",
        "stock": 80,
        "category": "Bebidas",
        "is_active": true
    },

Retorno esperado com status code 404 para produto inexistente ou não encontrado:

{
    "detail": "Product not found"
}

[200] Preencher Carrrinho

PATCH - /cart/

Essa rota necessita autenticação bearer token.

Retorno esperado com status code 200 para preenchimento realizado com sucesso:

{
	"id": "7ecbe7fc-9cd3-4bde-905d-9113a1b73e1f",
	"updated_at": "2023-03-14T18:15:10.778943Z",
	"total_amount": "25.12",
	"products_count": 2,
	"products": [
		{
			"id": "1c43bebc-b7dc-435b-b1f0-4d0d95e8583d",
			"name": "Óleo de soja",
			"category": "Alimentícios",
			"price": "18.98"
		},
		{
			"id": "288f9f94-af74-42a4-bf06-b99986101f87",
			"name": "Sal refinado",
			"category": "Alimentícios",
			"price": "6.14"
		},
	]
}

Retorno esperado com status code 401 para ausência de autenticação por token:

{
	"detail": "Authentication credentials were not provided."
}

Retorno esperado com status code 403 para usuário sem permissão de acesso:

{
	"detail": "You do not have permission to perform this action."
}

[200] Buscar Carrrinho

GET - /cart/

Essa rota necessita autenticação bearer token.

Retorno esperado com status code 200 para busca realizada com sucesso:

{
	"id": "7ecbe7fc-9cd3-4bde-905d-9113a1b73e1f",
	"updated_at": "2023-03-14T18:15:10.778943Z",
	"total_amount": "25.12",
	"products_count": 2,
	"products": [
		{
			"id": "1c43bebc-b7dc-435b-b1f0-4d0d95e8583d",
			"name": "Óleo de soja",
			"category": "Alimentícios",
			"price": "18.98"
		},
		{
			"id": "288f9f94-af74-42a4-bf06-b99986101f87",
			"name": "Sal refinado",
			"category": "Alimentícios",
			"price": "6.14"
		},
	]
}

Retorno esperado com status code 401 para ausência de autenticação por token:

{
	"detail": "Authentication credentials were not provided."
}

Retorno esperado com status code 403 para usuário sem permissão de acesso:

{
	"detail": "You do not have permission to perform this action."
}

[204] Deletar Carrrinho

DELETE - /cart/

Essa rota necessita autenticação bearer token.

Retorno esperado com status code 204 com o retorno vazio

{}

Retorno esperado com status code 401 para ausência de autenticação por token:

{
	"detail": "Authentication credentials were not provided."
}

Retorno esperado com status code 403 para usuário sem permissão de acesso:

{
	"detail": "You do not have permission to perform this action."
}

[201] Criar Pedido

POST - /orders/

Essa rota necessita autenticação bearer token.

Retorno esperado com status code 201 para criação realizada com sucesso:

{
"count": 1,
"sellers": 1,
"results": [
	{
           "id": "7c983256-ab9b-4c4a-a6b0-0812edb6894a",
	   "status": "PEDIDO REALIZADO",
           "created_at": "2023-03-14T18:29:10.548225Z",
	   "products_count": 1,
	   "products": [
			{
			   "id": "b2a77c04-a300-4680-9639-a1b5783858d0",
			   "name": "Margarina",
			   "category": "Alimentícios",
			   "price": "6.33"
			}
		],
		"seller": {
			"id": "b0f0d911-8221-4781-be29-535cf0a13fe7",
			"username": "phoebe92",
			"first_name": "Sheila",
			"email": "eddie_hebert@xanide.dog"
		},
		"client": {
			"id": "c29822ae-e212-424b-acf2-26bb064475b6",
			"username": "gustavo123",
			"first_name": "Gustavo",
			"email": "gustavo123@gmail.com",
			"address": {
				"street": "Reeve Place",
				"district": "Walland",
				"zipCode": "22514-281",
				"state": "OH",
				"city": "Falconaire",
				"number": 12
			}
		}
	},
]
}

Retorno esperado com status code 401 para ausência de autenticação por token:

{
	"detail": "Authentication credentials were not provided."
}

Retorno esperado com status code 403 para usuário sem permissão de acesso:

{
	"detail": "You do not have permission to perform this action."
}

[200] Buscar Pedido

GET - /orders/

Essa rota necessita autenticação bearer token.

Retorno esperado com status code 200 para busca realizada com sucesso:

{
"count": 1,
"next": "http://127.0.0.1:8000/api/orders/?page=2",
"previous": null,
"results": [
	{
		"id": "7c983256-ab9b-4c4a-a6b0-0812edb6894a",
		"status": "PEDIDO REALIZADO",
		"created_at": "2023-03-14T18:29:10.548225Z",
		"products_count": 1,
		"products": [
			{
			     "id": "b2a77c04-a300-4680-9639-a1b5783858d0",
			     "name": "Margarina",
		             "category": "Alimentícios",
			     "price": "6.33"
			}
		],
		"seller": {
			"id": "b0f0d911-8221-4781-be29-535cf0a13fe7",
			"username": "phoebe92",
			"first_name": "Sheila",
			"email": "eddie_hebert@xanide.dog"
		},
		"client": {
			"id": "c29822ae-e212-424b-acf2-26bb064475b6",
			"username": "gustavo123",
			"first_name": "Gustavo",
			"email": "gustavo123@gmail.com",
			"address": {
				"street": "Reeve Place",
				"district": "Walland",
				"zipCode": "22514-281",
				"state": "OH",
				"city": "Falconaire",
				"number": 12
			}
		}
	}
]
}

Retorno esperado com status code 401 para ausência de autenticação por token:

{
	"detail": "Authentication credentials were not provided."
}

Retorno esperado com status code 403 para usuário sem permissão de acesso:

{
	"detail": "You do not have permission to perform this action."
}

[200] Buscar Pedido por Id

GET - /orders/:id/

Essa rota necessita autenticação bearer token, é preciso enviar o id do pedido como parâmetro:

Retorno esperado com status code 200 para busca realizada com sucesso:

{
"id": "7c983256-ab9b-4c4a-a6b0-0812edb6894a",
"status": "PEDIDO REALIZADO",
"created_at": "2023-03-14T18:29:10.548225Z",
"products_count": 1,
"products": [
		{
		     "id": "b2a77c04-a300-4680-9639-a1b5783858d0",
		     "name": "Margarina",
		     "category": "Alimentícios",
		     "price": "6.33"
		}
	],
	"seller": {
		"id": "b0f0d911-8221-4781-be29-535cf0a13fe7",
		"username": "phoebe92",
		"first_name": "Sheila",
		"email": "eddie_hebert@xanide.dog"
	},
	"client": {
		"id": "c29822ae-e212-424b-acf2-26bb064475b6",
		"username": "gustavo123",
		"first_name": "Gustavo",
		"email": "gustavo123@gmail.com",
		"address": {
			"street": "Reeve Place",
			"district": "Walland",
			"zipCode": "22514-281",
			"state": "OH",
			"city": "Falconaire",
			"number": 12
		}
	}
}

Retorno esperado com status code 401 para ausência de autenticação por token:

{
	"detail": "Authentication credentials were not provided."
}

Retorno esperado com status code 403 para usuário sem permissão de acesso:

{
	"detail": "You do not have permission to perform this action."
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载