Plataforma para atendimento a outras empresas que necessitam de atendimento técnico.

Overview
SoftClient Logo

Plataforma para atendimento a outras empresas que necessitam de atendimento técnico. É possível que os usuarios de empresas parceiras registrem solicitações para atendimento de seus equipamentos, tais como: computador, impressora, nobreak e notebook. E os técnicos poderão posicionar para atendimento e ir até o local para fazer a manutenção do mesmo.

Rodando a aplicação:

Após clonar do Git, digite no terminal:

  • python -m venv venv
  • source venv/bin/activate
  • pip install -r requirements.txt
  • flask run

Para criar um usuário do tipo "super", digite o seguinte comando no terminal:

heroku run --app softclient flask super create name username password

Exemplo:

heroku run --app softclient flask super create kelvin kallissin 123456

Para ativar a empresa que irá cadastrar, digite o seguinte comando no terminal:

heroku run --app softclient flask super active cnpj

Exemplo:

heroku run --app softclient flask super active 20232212232343

Deploy da aplicação:

https://softclient.herokuapp.com/api

Endpoints

  1. Owners
  2. Company
    • Login Company
  3. User
    • Login User
  4. Orders
  5. Technicians

Owners

Endpoint referente aos donos da empresa, onde podemos fazer fazer login e listar todos os donos.

Login Owner

Rota responsável pelo login do usuário "owner". Retorna um token de acesso, para que o método GET seja liberado.

url method status
/owner/login POST 200 - 404

BODY

{
  "username": "odaairlopes",
  "password": "123456"
}

RESPONSE

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTYzOTU5MTA2MywianRpIjoiNTU3MTczNDktOGRkZS00ZmM5LWI1NzktYzE3OGQ5NTI4ZTE1IiwidHlwZSI6ImFjY2VzcyIsInN1YiI6eyJpZCI6MSwibmFtZSI6Ik9kYWlyIiwidXNlcm5hbWUiOiJvZGFhaXJsb3BlcyIsInJvbGUiOiJzdXBlciIsImFjdGl2ZSI6dHJ1ZX0sIm5iZiI6MTYzOTU5MTA2MywiZXhwIjoxNjM5NTkxOTYzfQ.q7nCO3NVPcSOdIZalcQNKOLtVw7u-JdbeJAoUqa5dcQ"
}

GET Owner

Rota responsável por mostrar todos os usuários "owner" cadastrados.

url method status
/owner GET 200

RESPONSE

[
  {
    "id": 1,
    "name": "Odair",
    "username": "odaairlopes",
    "role": "super",
    "active": true
  }
]

Company

Endpoint referente à própria empresa. Aqui, podemos fazer o login, criação de novas empresas, obtenção de todas empresas cadastradas, obtenção de apenas uma empresa (pelo id), obtenção de todos os usuários de determinada empresa e remoção de uma empresa cadastrada. Para a empresa cadastrar uma empresa, é necessário de um super usuário.

Login Company

Rota responsável pelo login da empresa. Retorna um token de acesso para que os outros métodos sejam liberados. Essa empresa precisa estar ativada (ativação feita pelo super usuário).

url method status
/company/login POST 200 - 404

BODY

{
  "username": "sofclient",
  "password": "softclient1234"
}

RESPONSE

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTYzOTU5MTg1NywianRpIjoiZmJkNWYzMDEtZjJlMS00MDhkLWE5YjUtNzg3M2U4YmFiZjE4IiwidHlwZSI6ImFjY2VzcyIsInN1YiI6eyJpZCI6MSwiYWN0aXZlIjpmYWxzZSwiY25waiI6IjIwMjMyMjEyMjMyMzQyIiwidHJhZGluZ19uYW1lIjoiU29mdCBDbGllbnQgSW5jLiIsImNvbXBhbnlfbmFtZSI6IlNvZnRjbGllbnQiLCJ1c2VybmFtZSI6InNvZmNsaWVudCIsInJvbGUiOiJhZG1pbiJ9LCJuYmYiOjE2Mzk1OTE4NTcsImV4cCI6MTYzOTU5Mjc1N30.TyrNl7sgcVeeI4RjJehpUU_Ln-zD2BLD3M7tAuXCPP4"
}

POST Company

Rota para cadastrar uma empresa.

url method status
/company POST 201 - 400

Formato dos campos:

  • "cnpj": deve ser colocado todos os 14 dígitos, sem pontuação;

BODY

{
  "cnpj": "20232212232342",
  "trading_name": "Soft Client Inc.",
  "company_name": "SoftClient",
  "username": "sofclient",
  "password": "softclient1234"
}

RESPONSE

{
  "id": 1,
  "active": false,
  "cnpj": "20.232.212/2323-42",
  "trading_name": "Soft Client Inc.",
  "company_name": "Softclient"
}

GET Company

Rota para obter todas as empresas cadastradas.

url method status
/company GET 201

RESPONSE

[
  {
    "id": 1,
    "cnpj": "20.232.212/2323-42",
    "trading_name": "Soft Client Inc.",
    "company_name": "Softclient",
    "users": []
  },
  {
    "id": 2,
    "cnpj": "10.123.286/0001-56",
    "trading_name": "Wal-Mart Inc.",
    "company_name": "Walmart",
    "users": []
  },
  {
    "id": 3,
    "cnpj": "08.522.687/0001-37",
    "trading_name": "Microsoft Inc.",
    "company_name": "Microsoft",
    "users": []
  }
]

GET One Company

Rota que pega uma única empresa, pelo seu id.

url method status
company/company_id GET 200 - 404

RESPONSE

{
  "id": 1,
  "cnpj": "20.232.212/2323-42",
  "trading_name": "Soft Client Inc.",
  "company_name": "Softclient",
  "users": []
}

GET Company Users

Rota que pega os usuários cadastrados referentes à empresa.

url method status
/company/company_id/users GET 200 - 400

1 - Caso não haja nenhum usuário cadastrado

RESPONSE

[]

2 - Caso tenha algum usuário cadastrado

RESPONSE

[
  {
    "id": 1,
    "name": "Marcelo",
    "email": "[email protected]",
    "birthdate": "Fri, 22 Nov 1996 00:00:00 GMT",
    "active": true,
    "role": "tech"
  }
]

PATCH Company

Rota responsável pela atualização de uma empresa.

url method status
/company/company_id PATCH 200 - 400

BODY

{
  "trading_name": "Soft Client Enterprise"
}

RESPONSE

{
  "id": 1,
  "cnpj": "20.232.212/2323-42",
  "trading_name": "Soft Client Enterprise",
  "company_name": "Softclient"
}

PATCH Company active

Rota responsável por desativar uma empresa.

url method status
/company/company_id PATCH 200 - 400

BODY

{
  "active": False
}

RESPONSE - status

{
  "id": 1,
  "cnpj": "20.232.212/2323-42",
  "trading_name": "Soft Client Enterprise",
  "company_name": "Softclient",
  "active": false
}

User

Endpoint referente aos usuários que fazem parte da empresa. Aqui podemos fazer a criação de usuário, alteração de usuários, obtenção de todos os usuários, obtenção de usuário por filtragem (email e nome), remoção de um usuário, pesquisa de usuários que solicitaram um serviço e pesquisa de um usuário de certa empresa.

Login User

Rota responsável pelo login do usuário. Retorna um token de acesso para que os outros métodos sejam liberados.

BODY

{
  "email": "[email protected]",
  "password": "kelvin1234"
}

RESPONSE

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTYzOTU5MzI0NywianRpIjoiYzUwMThhNmEtYWI2Mi00NWI2LTkyM2UtNTA5MzZlNWU0NTBjIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6eyJpZCI6MSwibmFtZSI6IktlbHZpbiIsImVtYWlsIjoia2VsdmluQGdtYWlsLmNvbSIsInBvc2l0aW9uIjoiQ1RPIiwiYWN0aXZlIjp0cnVlLCJiaXJ0aGRhdGUiOiIyMi8wNS8xOTkzIiwicm9sZSI6ImFkbWluIiwiY29tcGFueV9uYW1lIjoiU29mdGNsaWVudCJ9LCJuYmYiOjE2Mzk1OTMyNDcsImV4cCI6MTYzOTU5NDE0N30.UpfscEuF4p-BpO1NJtJb4RkKII-GvDxA-pfJyu4OjC4"
}

POST User

Rota referente a criação de um usuário. Necessário utilizar o token da empresa, para fazer a criação do seu usuário.

url method status
/user POST 201 - 400 - 409

Formato dos campos:

  • "name": string com 150 caracteres;
  • "email": string;
  • "password": string;
  • "birthdate": data no formato XX/XX/XXXX;
  • "position": cargo na empresa, string;
  • "role": permissões que são concedidas ao usuário (user/tech);

BODY

{
  "name": "Kelvin",
  "email": "[email protected]",
  "password": "kelvin1234",
  "birthdate": "22/05/1993",
  "position": "CTO",
  "role": "admin",
  "company_id": 1
}

RESPONSE

{
  "id": 1,
  "name": "Kelvin",
  "email": "[email protected]",
  "position": "CTO",
  "birthdate": "22/05/1993",
  "active": true,
  "role": "admin",
  "company_name": "Softclient"
}

GET Users

Rota para obter todos os usuários cadastrados.

url method status
/user GET 200

RESPONSE

[
  {
    "id": 1,
    "name": "Kelvin",
    "email": "[email protected]",
    "position": "CTO",
    "active": true,
    "birthdate": "22/05/1993",
    "role": "admin",
    "company": {
      "id": 1,
      "trading_name": "Soft Client Inc.",
      "cnpj": "20232212232342"
    }
  }
]

GET One user by id

Rota referente a pesquisa de um usuário, passando o id dele.

url method status
/user/user_id GET 200 - 404

RESPONSE

{
  "id": 1,
  "name": "Kelvin",
  "email": "[email protected]",
  "position": "CTO",
  "active": true,
  "birthdate": "22/05/1993",
  "role": "admin",
  "company": {
    "id": 1,
    "trading_name": "Soft Client Inc.",
    "cnpj": "20232212232342"
  }
}

GET One user by name

Rota referente a pesquisa de um usuário, passando o nome dele.

url method status
/user/user_name GET 200 - 404

RESPONSE

{
  "id": 1,
  "name": "Kelvin",
  "email": "[email protected]",
  "position": "CTO",
  "active": true,
  "birthdate": "22/05/1993",
  "role": "admin",
  "company": {
    "id": 1,
    "trading_name": "Soft Client Inc.",
    "cnpj": "20232212232342"
  }
}

GET Company by user id

Rota responsável pela pesquisa de uma empresa utilizando o id do usuário.

url method status
/user/user_id/company GET 200 - 404

RESPONSE

{
  "company": {
    "id": 1,
    "cnpj": "20232212232342",
    "trading_name": "Soft Client Inc.",
    "company_name": "Softclient"
  }
}

GET Order by user id

Rota responsável pela pesquisa de um chamado utilizando o id do usuário. Para essa pesquisa, é necessário passar o token do usuário com a role 'user'.

url method status
/user/user_id/order GET 200 - 404

RESPONSE

[
  {
    "id": 1,
    "type": "computador",
    "status": "fechado",
    "description": "O computador apresenta falhas contínuas",
    "release_date": "Wed, 15 Dec 2021 18:45:47 GMT",
    "update_date": "Wed, 15 Dec 2021 19:02:15 GMT",
    "solution": "Troca de algumas peças do computador, que estavam falhando. Todas elas foram verificadas."
  }
]

PATCH User

Rota referente a atualização de um usuário, passando o id desse usuário.

url method status
/user/user_id PATCH 200 - 404

BODY

{
  "name": "Kelvin Alisson"
}

RESPONSE

{
  "id": 1,
  "name": "Kelvin",
  "email": "[email protected]",
  "position": "CTO",
  "active": true,
  "birthdate": "22/05/1993",
  "role": "admin",
  "company_name": "Softclient"
}

Order

Endpoint referente a criação de um chamado, alteração de usuários, obtenção de todos os chamados, remoção de um chamado, pesquisa do usuário que fez um chamado e pesquisa de um técnico de pelo chamado. O chamado só pode ser criado por um usuário que tenha a role de 'user', sendo necessário o token desse usuário.

POST Order

Rota referente à criação de um chamado.

url method status
/orders POST 200

BODY

{
  "type": "nobreak",
  "description": "No break apitando todo momento",
  "release_date": "22/10/2021",
  "update_date": "16/12/2021",
  "user_id": 1
}

RESPONSE

{
  "id": 1,
  "type": "nobreak",
  "status": "aberto",
  "description": "No break apitando todo momento",
  "release_date": "Thu, 16 Dec 2021 17:05:31 GMT",
  "update_date": "Thu, 16 Dec 2021 17:05:31 GMT",
  "solution": "",
  "user": {
    "id": 1,
    "name": "Kelvin",
    "email": "[email protected]",
    "position": "CTO",
    "role": "admin"
  },
  "technician": null
}

GET Order

Rota responsável por obter todos os chamados.

url method status
/orders GET 200

RESPONSE

[
  {
    "id": 1,
    "type": "nobreak",
    "status": "aberto",
    "description": "No break apitando todo momento",
    "release_date": "Thu, 16 Dec 2021 17:05:31 GMT",
    "update_date": "Thu, 16 Dec 2021 17:05:31 GMT",
    "solution": "",
    "user": {
      "id": 1,
      "name": "Kelvin",
      "email": "[email protected]",
      "position": "CTO",
      "role": "admin"
    },
    "technician": null
  }
]

GET Order by id

Rota responsável pela pesquisa do chamado, passando o id dele na requisição.

url method status
/orders/order_id GET 200 - 404

RESPONSE

{
  "id": 1,
  "type": "Nobreak",
  "status": "aberto",
  "description": "No break apitando todo momento",
  "release_date": "Thu, 16 Dec 2021 17:05:31 GMT",
  "update_date": "Thu, 16 Dec 2021 17:05:31 GMT",
  "solution": "",
  "user": {
    "id": 1,
    "name": "Kelvin",
    "email": "[email protected]",
    "position": "CTO",
    "role": "admin"
  },
  "technician": null
}

GET User by order id

Rota responsável pela pesquisa do usuário que solicitou o chamado, passando o id do chamado na rota.

url method status
/orders/order_id/user GET 200 - 404

RESPONSE

{
  "user": {
    "id": 2,
    "name": "João Guilherme Filho",
    "email": "[email protected]",
    "birthdate": "22/05/1993",
    "role": "user"
  }
}

GET Technician by order id

Rota responsável pela pesquisa do técnico que realizará a manutenção, passando o id do chamado na rota.

url method status
/orders/order_id/technician GET 200 - 404

RESPONSE

{
  "technician": {
    "id": 1,
    "name": "Gustavo Martins",
    "email": "[email protected]",
    "birthdate": "22/11/1996"
  }
}

GET Order by status

Rota responsável por obter os chamados, passando na rota os status disponíveis (aberto, em_atendimento, fechado) e o token do usuário que criou esse chamado.

url method status
/orders/order_status GET 200 - 404

RESPONSE

[
  {
    "id": 1,
    "type": "Nobreak",
    "status": "aberto",
    "description": "No break apitando todo momento",
    "release_date": "Thu, 16 Dec 2021 17:05:31 GMT",
    "update_date": "Thu, 16 Dec 2021 17:05:31 GMT",
    "solution": "",
    "user": {
      "id": 1,
      "name": "Kelvin",
      "email": "[email protected]",
      "position": "CTO",
      "role": "admin"
    },
    "technician": null
  }
]

GET Orders Relatory

Rota responsável para download de relatório de ordens com status igual a aberto e em_atendimento

url method status
/orders/relatory GET 200 - 404

PATCH Order by id

Rota responsável pela atualização de um chamado, passando o id dele na rota.

url method status
/orders/order_id PATCH 200 - 400 - 401 - 404

BODY

{
  "description": "Apresenta falhas contínuas."
}

RESPONSE

{
  "id": 1,
  "type": "Nobreak",
  "status": "aberto",
  "description": "Apresenta falhas contínuas.",
  "release_date": "Thu, 16 Dec 2021 17:05:31 GMT",
  "update_date": "Thu, 16 Dec 2021 17:05:31 GMT",
  "solution": "",
  "user": {
    "id": 1,
    "name": "João",
    "email": "[email protected]",
    "position": "CTO",
    "role": "admin"
  },
  "technician": null
}

DELETE Order

Rota responsável por fazer a remoção de um chamado, passando o id dele na rota.

url method status
/orders/order_id DELETE 200 - 404

RESPONSE - status

204

Technician

Endpoint referente ao técnicos responsáveis por responderem aos chamados. Aqui podemso fazer o login do técnico, inserção de um técnico, alteração de dados do técnico, obtenção de todos os técnicos, obtenção de um técnico apenas, obtenção dos chamados que estão relacionados à um técnico e exclusão de um técnico. Para a criação de um técnico, é necessário o token da empresa. Para as outras rotas, necessário o token do próprio técnico, obtido no login.

LOGIN Technician

Rota responsável pelo login do técnico. Retorna um token de acesso para que os outros métodos sejam liberados.

url method status
/technicians/login POST 200 - 404

BODY

{
  "email": "[email protected]",
  "password": "123456"
}

RESPONSE

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTYzOTU5NDQzMywianRpIjoiYjJiNDMyZWUtMzlhMC00MTNmLTlhOWYtYTQ5Y2QwYjM4NWQzIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6eyJpZCI6MSwibmFtZSI6Ikd1c3Rhdm8gTWFydGlucyIsImVtYWlsIjoiZ3VzdGF2b21hcnRpbnNAZ21haWwuY29tIiwiYmlydGhkYXRlIjoiRnJpLCAyNyBEZWMgMTk4NSAwMDowMDowMCBHTVQifSwibmJmIjoxNjM5NTk0NDMzLCJleHAiOjE2Mzk1OTUzMzN9.snEqX5nCWlItBDEcOEVXFZHOKYgwrgrFdPgeNGyEwAs"
}

POST Technician

url method status
/technicians POST 200
{
  "name": "Erick Lander",
  "email": "[email protected]",
  "password": "123456",
  "birthdate": "03/05/1989"
}

RESPONSE

{
  "id": 1,
  "name": "Erick Lander",
  "email": "[email protected]",
  "birthdate": "03/05/1989",
  "role": "tech"
}

GET Technician

Rota responsável pela pesquisa de todos os técnicos registrados na API.

url method status
/technicians GET 200
[
  {
    "id": 1,
    "name": "Erick Lander",
    "email": "[email protected]",
    "birthdate": "03/05/1989",
    "role": "tech"
  }
]

GET Technician by id

Rota responsável por trazer os dados de um técnico, passando o id dele na rota.

url method status
/technicians/technician_id GET 200 - 404
{
  "id": 1,
  "name": "Erick Lander",
  "email": "[email protected]",
  "birthdate": "03/05/1989",
  "role": "tech"
}

GET Order by technician id

Rota responsável por obter à qua(is)l chamado(s) aquele técnico foi relacionado, passando o id do técnico na rota.

url method status
/technicians/technician_id/orders GET 200 - 404
[
  {
    "id": 1,
    "type": "nobreak",
    "status": "em_atendimento",
    "description": "Apresenta falhas contínuas.",
    "release_date": "Thu, 16 Dec 2021 17:05:31 GMT",
    "update_date": "Thu, 16 Dec 2021 17:32:12 GMT",
    "solution": "",
    "user": {
      "id": 1,
      "name": "João",
      "email": "[email protected]",
      "position": "CTO",
      "company": {
        "id": 1,
        "cnpj": "52.468.355/0001-03",
        "trading_name": "Microsoft Enterprise"
      }
    }
  }
]

PATCH Technician

Rota responsável pela atualização dos dados do técnico, passando o id do técnico na rota. Para poder fazer as alterações, é necessário estar logado na aplicação.

url method status
/technicians/technician_id PATCH 200 - 400 - 404 - 409

BODY

{
  "name": "Erick"
}

RESPONSE

{
  "id": 1,
  "name": "Erick",
  "email": "[email protected]",
  "birthdate": "03/05/1989",
  "role": "tech"
}

PATCH Take order

Rota responsável pelo técnico assumir um chamado em aberto. Para isso, é necessário apenas passar o id do chamado na rota e o token do técnico que ficará com aquele chamado.

url method status
/technicians/take_order/order_id PATCH 200 - 400 - 404

RESPONSE

{
  "order": {
    "id": 1,
    "status": "em_atendimento",
    "type": "nobreak",
    "description": "Apresenta falhas contínuas.",
    "release_date": "Thu, 16 Dec 2021 17:05:31 GMT",
    "update_date": "Thu, 16 Dec 2021 17:32:12 GMT",
    "user": {
      "id": 1,
      "name": "João",
      "email": "[email protected]",
      "position": "CTO",
      "birthdate": "01/01/2001"
    }
  }
}

PATCH Finalize order

Rota responsável pelo técnico finalizar aquele chamado. Para isso, é necessário apenas passar id do chamado na rota e o token do técnico que havia assumido aquele chamado.

url method status
/technicians/finalize_order/order_id PATCH 200 - 400 - 401 - 404

BODY

{
  "solution": "COMPRA DE UM NOVO NOBREAK."
}

RESPONSE

{
  "order": {
    "id": 1,
    "status": "fechado",
    "type": "nobreak",
    "description": "Apresenta falhas contínuas.",
    "release_date": "Thu, 16 Dec 2021 17:05:31 GMT",
    "update_date": "Thu, 16 Dec 2021 17:34:30 GMT",
    "solution": "COMPRA DE UM NOVO NOBREAK.",
    "user": {
      "id": 1,
      "name": "João",
      "email": "[email protected]",
      "position": "CTO",
      "birthdate": "01/01/2001"
    }
  }
}
Owner
Kelvin Alisson Cantarino
Desenvolvedor Web Full Stack
Kelvin Alisson Cantarino
A Telegram Bot Plays With Words!!!

TheWordzBot ➠ I Can Turn Text Into Audio ➠ I Can Get Results From Dictionary ➠ I Can Make Google Search For You ➠ I Can Suggest Strong Passwords For Y

RAVEEN KUMAR 8 Feb 28, 2022
LavaAPI - A simple library for accepting payments and using the LAVA Wallet

This library was created to simplify the LAVA api provided on the official websi

Vlad Baccara 8 Dec 18, 2022
Local community telegram bot

Бот на районе Телеграм-бот для поиска адресов и заведений в вашем районе города или в небольшом городке. Требует недели прогулок по району д

Ilya Zverev 32 Jan 19, 2022
Uma API pública contendo informações sobre o unvierso de Roberto Gomez Bolaños.

Chespirito API Objetivo Esta API tem como objetivo ser um ponto de referência para a procura sobre todo o universo do grande Roberto Gomez Bolaños, ta

Pery Lemke 6 Feb 02, 2022
This is a starter template of discord.py project

Template Discord.py This is a starter template of discord.py project (Supports Slash commands!). 👀 Getting Started First, you need to install Python

1 Dec 22, 2021
A python API for BSCScan (Binance Smart Chain Explorer), available on PyPI.

bscscan-python A complete Python API for BscScan.com, available on PyPI. Powered by BscScan.com APIs. This is a gently modified fork of the etherscan-

Panagiotis Kotsias 246 Dec 31, 2022
Programa de código abierto para probar el API de Bitso, el exchange más importante de América Latina.

Bitso Semiautomático Programa de código abierto para probar el API de Bitso, el exchange más importante de América Latina. Desarrollador Fernando Mire

Fernando Mireles 17 Dec 07, 2022
Facebook Clooning Tool BD...

Facebook Clooning Tool BD...

Ariyan Ahmed Mamun 2 Feb 16, 2022
A Discord bot that controls Pico-8.

Pico-8 Discord Bot Synopsis: A Discord bot that controls Pico-8. Please let me know if you make any games with this tool! I will simplify the discord.

Camden 1 Jan 28, 2022
Implementation of Chatterbot using Discord API

discord-chat-bot Implementation of Chatterbot using Discord API. Usage Due to the necessity of storing files to train the AI, the bot is not hosted pu

kiwijuice56 0 Sep 29, 2022
0-1 knapsack with an additional constraint of maximum number of items used

extended_knapsack 0-1 knapsack with an additional constraint of maximum number of items used. Usage pip3 install extended_knapsack from extended_knaps

Lion Ralfs 1 Jan 06, 2022
Бот Telegram для Школы в Капотне (ЦО № 1858)

co1858 Telegram Bot Активно разрабатывался в 2015-2016 году как учебный проект, с целью научиться создавать ботов для Telegram. Бот автоматически парс

Ilya Pavlov 4 Aug 30, 2022
Uses discords api to see if a token has a valid payment method.

Discord Payment Checker Uses discords api to see if a token has a valid payment method. Report Bug · Request Feature Features Checks tokens Checks all

dropout 10 Dec 01, 2022
AWS Serverless Application Model (SAM) is an open-source framework for building serverless applications

AWS Serverless Application Model (AWS SAM) The AWS Serverless Application Model (SAM) is an open-source framework for building serverless applications

Amazon Web Services 8.9k Dec 31, 2022
Surfline Forecast Bot For Python

Surfline Forecast Bot A telegram bot created using Telethon that allows users to

1 May 08, 2022
Terraform module to ship CloudTrail logs stored in a S3 bucket into a Kinesis stream for further processing and real-time analysis.

AWS infrastructure to ship CloudTrail logs from S3 to Kinesis This repository contains a Terraform module to ship CloudTrail logs stored in a S3 bucke

Nexthink 8 Sep 20, 2022
A Really Simple and Advanced Google Colab NoteBook to Setup and start using Rclone on Google Colab easily.

Rclone on Google Colab (Advanced!) 🔥 1.Setup and Start using Rclone on Google Colab and Create/Edit/View and delete your Rclone config file and keep

Dr.Caduceus 14 May 24, 2022
A discord bot that send SMS spam!

bruh-bot send spam sms! send spam with email! it sends you spam via sms and Email using two tools, quack and impulse! if you have some problem contact

pai 32 Dec 25, 2022
Simple yet efficient tool used to check and sort tokens in terms of there validation.

Discord Token Checker Simple yet efficient tool used to check and sort tokens in terms of there validation.When the program is done,go to the "output"

Robotnik 15 Dec 27, 2022