Skip to content

Api que prover endpoints com os dados formatados das séries (opções) de ações e índices da B3

Notifications You must be signed in to change notification settings

Megas-MDN/Api-Series-Autorizadas-B3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API Series Autorizadas

A API desenvolvida tem como objetivo disponibilizar o acesso às opções que estão em vigência na bolsa de valores B3 de maneira formatada e filtrada. Ela permite o acesso do tipo GET na rota /search com diversas possibilidades de query params para buscar opções e na rota /source para acessar o link do arquivo fonte no site da B3.

Link do query maker da aplicação: demo api Endpoint para requisitar os dados: /search?; Endpoint para pegar o link fonte que alimenta a base: /source;


Fluxo da aplicação

ScreenShot


🧐 Features

Funcionalidades implementadas na API:

  • Download de arquivo .zip

  • Descompactação do .zip

  • Transformação do arquivo .txt em um arquivo .json formatado

  • Inserção dos dados do arquivo .json no banco de dados

  • Disponibilização dos dados pelo endpoint /search

  • Mais de 10 Query Parameters para filtragem

  • As Query Parameters podem ser combinadas para refinar a filtragem

  • Query Maker para facilitar a construção da query


🛠️ Instalando o projeto

  1. Clonar o repositório
git clone https://github.com/Megas-MDN/Api-Series-Autorizadas-B3.git
  1. Entre na pasta clonada
cd Api-Series-Autorizadas-B3
  1. Instalar as dependências
npm install
  1. Para rodar em modo de produção
npm start
  1. Para rodar em modo de desenvolvimento
npm run dev

📦 Variáveis de Ambiente

Para rodar esse projeto, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env

USER_DB=usuario_banco_de_dados

PASS_DB=senha_banco_de_dadoss

HASH_ATT=hash_para_atualizar_os_dados

URL_SOURCE=url_b3_link_direto

🌟 Pronto para usar!


📚 Documentação da API

Retorna todos os itens em ordem alfabética com o limit de 20 elementos.

  GET /search?
📝 Exemplo de resposta
{
  "series": [
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPH900",
      "tipoDerivativo": "Americano",
      "strike": 90,
      "vencimento": "2023-08-18T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPT900",
      "tipoDerivativo": "Europeu",
      "strike": 90,
      "vencimento": "2023-08-18T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPF884",
      "tipoDerivativo": "Europeu",
      "strike": 88.4,
      "vencimento": "2023-06-16T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPR884",
      "tipoDerivativo": "Europeu",
      "strike": 88.4,
      "vencimento": "2023-06-16T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPQ210",
      "tipoDerivativo": "Europeu",
      "strike": 77.25,
      "vencimento": "2023-05-19T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPE210",
      "tipoDerivativo": "Americano",
      "strike": 77.25,
      "vencimento": "2023-05-19T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPP675",
      "tipoDerivativo": "Europeu",
      "strike": 67.5,
      "vencimento": "2023-04-20T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPD675",
      "tipoDerivativo": "Europeu",
      "strike": 67.5,
      "vencimento": "2023-04-20T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPT670",
      "tipoDerivativo": "Europeu",
      "strike": 67,
      "vencimento": "2023-08-18T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPH670",
      "tipoDerivativo": "Americano",
      "strike": 67,
      "vencimento": "2023-08-18T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPD650",
      "tipoDerivativo": "Americano",
      "strike": 65,
      "vencimento": "2023-04-20T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPP650",
      "tipoDerivativo": "Europeu",
      "strike": 65,
      "vencimento": "2023-04-20T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPB650",
      "tipoDerivativo": "Americano",
      "strike": 65,
      "vencimento": "2024-02-16T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPN650",
      "tipoDerivativo": "Europeu",
      "strike": 65,
      "vencimento": "2024-02-16T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPD630",
      "tipoDerivativo": "Americano",
      "strike": 63,
      "vencimento": "2023-04-20T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPP630",
      "tipoDerivativo": "Europeu",
      "strike": 63,
      "vencimento": "2023-04-20T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPF606",
      "tipoDerivativo": "Americano",
      "strike": 60.65,
      "vencimento": "2023-06-16T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPR606",
      "tipoDerivativo": "Europeu",
      "strike": 60.65,
      "vencimento": "2023-06-16T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES VENDA",
      "ticket": "RRRPT600",
      "tipoDerivativo": "Europeu",
      "strike": 60,
      "vencimento": "2023-08-18T00:00:00.000Z"
    },
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "3R PETROLEUM",
      "tipoAtivoPrincipal": "ON NM",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "RRRPH600",
      "tipoDerivativo": "Americano",
      "strike": 60,
      "vencimento": "2023-08-18T00:00:00.000Z"
    }
  ]
}

As possíveis Query Parameters

  GET /search?opcao=petrf291

A query opcao tem prioridade máxima sobre os outros filtros.

📝 /search?opcao=codigo_da_opcao
{
  "series": [
    {
      "tipoDaSerie": 2,
      "ativPrincipal": "PETROBRAS",
      "tipoAtivoPrincipal": "PN N2",
      "labelDerivativo": "OPCOES COMPRA",
      "ticket": "PETRF291",
      "tipoDerivativo": "Europeu",
      "strike": 26.05,
      "vencimento": "2023-06-16T00:00:00.000Z"
    }
  ]
}

🏷️ /search?

ativo= Nome da ação vinculada ao deriavativo

&

tipoVencimentopcao= (americano ou europeu)

&

offset= A partir de um deslocamento de n registros

&

limit= Número máximo de elementos

&

tipativo= (ON ou PN)

&

tipoopcao= (Call ou Put)

&

vencimento= Nome do mês do vencimento (ex: setembro)

&

ano= Ano do vencimento (ex: 2023)

&

min= Strike mínimo da filtragem

&

max= Strike máximo da filtragem


🏷️ /source

📝 Exemplo de resposta
{
  "message": "Source na base de dados.",
  "text": "Lista Completa de Séries Autorizadas",
  "src": "Link direto para download das séries autorizadas na b3",
  "date": "2023-10-06"
}

🔒️ POST /data

Para esta rota é necessário passar no body da requisição e uma chave de autenticação pelo header:

📝 Exemplo da requisição
{
  "body": {
    "src": "link atualizado para o download do .zip na b3"
  },
  "headers": {
    "Authorization": "HASH_ATT"
  }
}
📝 Exemplo de resposta
{
  "message": "Updated!",
  "total": 41622,
  "header": "01|20230406|20230407|00:01:08",
  "randomOption": {
    "tipoDaSerie": 2,
    "ativPrincipal": "DIRECIONAL",
    "tipoAtivoPrincipal": "ON NM",
    "labelDerivativo": "OPCOES COMPRA",
    "ticket": "DIRRD160",
    "tipoDerivativo": "Americano",
    "strike": 16,
    "vencimento": "04/20/2023"
  }
}

🔧 Query Maker

Para auxiliar na construção das queries a rota api-series-autorizadas-b3 oferece uma interface que possibilita selecionar os filtros.

query_maker


💻 Construído com:


Developed with ❤️ by Megas

About

Api que prover endpoints com os dados formatados das séries (opções) de ações e índices da B3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published