NAV Navbar

Introdução

A Quero Educação deu mais um passo no gerenciamento do estoque de bolsas de estudo por seus parceiros e agora esse processo passou por uma grande melhoria. Tudo isso para estreitar ainda mais os laços e reafirmar seu compromisso como Marketplace.

A partir de agora abrimos nosso modelo de estoque para ser acessado programaticamente via conjunto de APIs. O serviço permitirá que o parceiro consulte, crie, altere ou delete seu portfólio de bolsas como desejar.

O objetivo dessa melhoria é garantir a consistência entre as bases de dados da Quero Educação e da instituição de ensino superior, além de dar uma maior liberdade e autonomia para que se opere as bolsas.

Em poucas palavras, por meio das APIs o parceiro poderá integrar suas aplicações (sistemas de uso interno) diretamente no nosso modelo e, assim, fazer a gestão de suas bolsas de estudo do modo que preferir.

Para otimizar esse processo, implementamos uma Interface de Aplicações (API) REST. Ela é composta por dois serviços interdependentes (“Campi” e “Cursos”), os quais possuem seus respectivos métodos, conforme especificado abaixo.

Autenticação

Modo de autenticação

A autenticação é realizada por meio de uma combinação de usuário e senha. Caso a autenticação seja realizada com sucesso, o cliente receberá um token válido para a sessão por um tempo determinado, conforme descrito na documentação de login.

O nome do usuário e a senha são gerados através de um cadastro feito junto à Quero Educação. Para mais informações, contate seu Key Account Manager.

Requisição sem token

Ausência de Token
Status Code: 401 Unauthorized
www-authenticate: 'Token realm="StockIntegration"'

Em caso de requisição sem o envio do token, é retornado status 401 - Unauthorized.

Requisição com token inválido

Formato de token inválido
Status Code: 400 Bad Request

Em caso de token em formato inválido, é retornado status 400 - Bad Request.

Requisição com token não autorizado

Não autorizado
Status Code: 403 Forbidden

Em caso de token não autorizado, é retornado erro 403 - Forbidden.

Requisição com token sem permissão

Sem permissão
Status Code: 200 OK
{
  "error": true,
  "errors": [{
    "title": "Invalid Permission",
    "detail": "You are not authorized to access this resource with these parameters"
  }]
}

Em caso de token válido mas sem permissão de acesso ao recurso específico, é retornado o status 200 - OK com mensagem de erro no payload.

Login

A sessão é criada por meio da autenticação utilizando uma combinação de usuário e senha. Caso seja autenticado com sucesso, o cliente recebe um token válido por 4 horas. Após este período, o token expira e um novo token deve ser solicitado.

É necessário enviar este token no cabeçalho das requisições para ter permissão de executar as solicitações desta API.

Iniciar uma sessão

Exemplo de requisição

curl -X POST "https://stock.querobolsa.com.br/api/sessions" \
  -H 'Content-Type: application/json' \
  -d '{
    "authentication": {
      "username": "teste@teste.com",
      "password": "teste123!"
    }
  }'

Exemplo de retorno JSON para esta requisição

{
  "access_token": "qPWFZr3CSX52SLeUWdP9XXL5"
}

É necessário enviar uma requisição com o username e password para iniciar uma sessão.

A resposta da requisição retorna o token da sessão, que ficará válido por 4 horas. Esse token precisará estar presente no campo Authorization no cabeçalho das outras ações da API.

Parâmetros para criar uma sessão

Nome Tipo Descrição
session object Objeto com dados das credenciais para login
username sting Nome de usuário para login fornecido pelo Quero Bolsa
password sting Senha para login fornecido pelo Quero Bolsa

Parâmetros da resposta

Nome Tipo Descrição
access_token sting Token de acesso da sessão

Paginação

Exemplo de paginação

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/universities/65605bf0-cad2-4dc2-ae11-65c77bc36508/campuses" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Exemplo de retorno JSON para esta requisição

{
  "has_more": true,
  "items": [
    {
      "id": "30fe7edb-ef73-4538-912a-26d5126a81a9",
      "university": {
        "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
        "name": "UniQuero",
      },
      "name": "Caxias",
      "address": "Rua Araão Reis, 1789, Bloco 1",
      "neighborhood": "Centro",
      "city": "Caxias",
      "state": "MA",
      "zip_code": "65604-060",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    },
    ...,
    {
      "id": "6cc4aa4f-ef6d-48d0-b73c-cf5c5126fd1c",
      "university": {
        "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
        "name": "UniQuero",
      },
      "name": "Sorocaba",
      "address": "Av. Independência, 210",
      "neighborhood": "Éden",
      "city": "Sorocaba",
      "state": "SP",
      "zip_code": "18087-101",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    }
  ]
}

A API de integração de estoque possui requisições de listagem de dados que podem resgatar quantidades massivas de informação. É utilizada paginação para evitar com que essas requisições não sobrecarreguem o banco de dados.

A API utiliza paginação baseada em cursor atráves dos parâmetros starting_after e ending_before. Ambos recebem um ID de um dado existente e retorna uma lista com até 1000 elementos no máximo.

Os objetos são retornados ordenados pela data de criação decrescentemente. O parâmetro ending_before faz a requisição retornar elementos criados anteriormente ao dado cujo ID foi indicado pelo parâmetro. Em contrapartida, o parâmetro starting_after faz a requisição retornar elementos listados criados após o dado cujo ID foi indicado.

O atributo has_more da resposta indica se há mais dados disponíveis depois dessa página. Se for false, significa que é o fim da lista e não há mais dados. Se for true, significa que há mais dados a serem resgatados. Após uma requisição utilizando o parâmetro ending_before, o atributo has_more se refere a possibilidade de retornar mais dados anteriores à página atual.

Parâmetros de paginação

Nome Tipo Descrição
starting_after cursor Cursor para uso em paginação. Retorna elementos listados após o dado cujo ID foi indicado
ending_before cursor Cursor para uso em paginação. Retorna elementos listados antes do dado cujo ID foi indicado

Informações de resultado de dados com paginação

Nome Tipo Descrição
has_more boolean Indica se há mais elementos disponíveis antes ou após essa página
items array Lista dos elementos retornados pela requisição

Uso do cursor ending_before

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/universities/65605bf0-cad2-4dc2-ae11-65c77bc36508/campuses?ending_before=6cc4aa4f-ef6d-48d0-b73c-cf5c5126fd1c" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Retorno

{
  "has_more": false,
  "items": [
    {
      "id": "7c11e1d0-1b96-412d-98db-db5fee90492d",
      "university": {
        "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
        "name": "UniQuero",
      },
      "name": "São Paulo",
      "address": "Rua Henri Dunant, 203",
      "neighborhood": "Chácara Santo Amaro",
      "city": "São Paulo",
      "state": "SP",
      "zip_code": "04709-110",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    },
    ...,
    {
      "id": "4ba0104a-fbac-4c67-942c-3fcd96b77a83",
      "university": {
        "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
        "name": "UniQuero",
      },
      "name": "SP",
      "address": "Av. Marquês de São Vicente, 2900",
      "neighborhood": "Água Branca",
      "city": "São Paulo",
      "state": "SP",
      "zip_code": "05036-040",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    }
  ]
}

No exemplo acima, vimos que has_more retornou true, portanto existem mais dados a serem resgatados após essa página. Para poder consultá-los, na próxima requisição o parâmetro starting_after precisa ter o ID do último elemento da lista items. A requisição e retorno ao lado são referentes ao exemplo acima.

Parâmetros de paginação

Nome Tipo Descrição
starting_after cursor Cursor para uso em paginação. Retorna elementos listados após o dado cujo ID foi indicado
ending_before cursor Cursor para uso em paginação. Retorna elementos listados antes do dado cujo ID foi indicado

Informações de resultado de dados com paginação

Nome Tipo Descrição
has_more boolean Indica se há mais elementos disponíveis antes ou após essa página
items array Lista dos elementos retornados pela requisição

Uso do cursor starting_after

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/universities/65605bf0-cad2-4dc2-ae11-65c77bc36508/campuses?starting_after=7c11e1d0-1b96-412d-98db-db5fee90492d" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Retorno

{
  "has_more": false,
  "items": [
    {
      "id": "30fe7edb-ef73-4538-912a-26d5126a81a9",
      "university": {
        "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
        "name": "UniQuero",
      },
      "name": "Caxias",
      "address": "Rua Araão Reis, 1789, Bloco 1",
      "neighborhood": "Centro",
      "city": "Caxias",
      "state": "MA",
      "zip_code": "65604-060",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    },
    ...,
    {
      "id": "6cc4aa4f-ef6d-48d0-b73c-cf5c5126fd1c",
      "university": {
        "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
        "name": "UniQuero",
      },
      "name": "Sorocaba",
      "address": "Av. Independência, 210",
      "neighborhood": "Éden",
      "city": "Sorocaba",
      "state": "SP",
      "zip_code": "18087-101",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    }
  ]
}

Assim como avançamos uma página, é possível facilmente retornar a dados anteriores à página atual. Para fazer isso, na próxima requisição o parâmetro starting_after precisa ter o ID do primeiro elemento da lista items. A requisição e retorno ao lado são referentes ao exemplo acima.

Parâmetros de paginação

Nome Tipo Descrição
starting_after cursor Cursor para uso em paginação. Retorna elementos listados após o dado cujo ID foi indicado
ending_before cursor Cursor para uso em paginação. Retorna elementos listados antes do dado cujo ID foi indicado

Informações de resultado de dados com paginação

Nome Tipo Descrição
has_more boolean Indica se há mais elementos disponíveis antes ou após essa página
items array Lista dos elementos retornados pela requisição

Universidades

Listar universidades

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/universities" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Exemplo de retorno JSON para esta requisição

{
  "has_more": false,
  "items": [
    {
      "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
      "name": "UniQuero",
    },
    {
      "id": "f21d030e-b40d-4ecf-a0a3-fd7d2cbd06e5",
      "name": "Faculdade Quero",
    }
  ]
}

Lista todas as universidades associadas ao usuário que possui o token de autenticação enviado na requisição.

Universidades são retornadas em páginas de até 1000 elementos, ordenadas pela última criação realizada. Se houver mais resultados, has_more retorna true indicando que é possível usar o parâmetro ending_before para consultar objetos antecessores à lista atual. Para mais informações, consulte a seção de paginação.

Requisição HTTP

GET https://stock.querobolsa.com.br/api/universities

Parâmetros da resposta

Nome Tipo Descrição
id string Identificador único de universidade
name string Nome da universidade

Campi

Listar campi

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/universities/65605bf0-cad2-4dc2-ae11-65c77bc36508/campuses" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Exemplo de retorno JSON para esta requisição

{
  "has_more": false,
  "items": [
    {
      "id": "00d9ef5a-d003-4212-99ff-c4308f18803d",
      "university": {
        "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
        "name": "UniQuero",
      },
      "name": "Caxias",
      "address": "Rua Araão Reis, 1789, Bloco 1",
      "neighborhood": "Centro",
      "city": "Caxias",
      "state": "MA",
      "zip_code": "65604-060",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    },
    {
      "id": "9d49f7f8-5994-40ae-a8fa-b9c9d66adef8",
      "university": {
        "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
        "name": "UniQuero",
      },
      "name": "Sorocaba",
      "address": "Av. Independência, 210",
      "neighborhood": "Éden",
      "city": "Sorocaba",
      "state": "SP",
      "zip_code": "18087-101",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    }
  ]
}

Lista os campus de uma dada faculdade. Apenas faculdades associadas ao usuário podem ser solicitadas. Em outros casos, a API retorna 404 - Not Found.

Campi são retornados em páginas de até 1000 elementos, ordenadas pela última criação realizada. Se houver mais resultados, has_more retorna true indicando que é possível usar o parâmetro ending_before para consultar objetos antecessores à lista atual. Para mais informações, consulte a seção de paginação.

Requisição HTTP

GET https://stock.querobolsa.com.br/api/universities/<UNIVERSITY_ID>/campuses

Parâmetros da requisição

Nome Tipo Descrição
UNIVERSITY_ID path ID da universidade onde deseja realizar a ação

Parâmetros da resposta

Nome Tipo Descrição
has_more boolean Indica se há mais elementos disponíveis antes ou após essa página
items object array Arranjo de objetos com dados de campus
id string Código identificador de campus
university object Objeto com dados de universidade
[university] id string Código identificador de universidade
[university] name string Nome da universidade
name string Nome do campus
address string Endereço do campus
neighborhood string Bairro do campus
city string Cidade do campus
state string Estado do campus
zip_code string Código CEP do campus
phone string Telefone do campus
latitude float Coordenada de latitude do campus
longitude float Coordenada de longitude do campus

Informações de um campus específico

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/universities/65605bf0-cad2-4dc2-ae11-65c77bc36508/campuses/00d9ef5a-d003-4212-99ff-c4308f18803d" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Exemplo de retorno JSON para esta requisição

{
  "id": "00d9ef5a-d003-4212-99ff-c4308f18803d",
  "university": {
    "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
    "name": "UniQuero",
  },
  "name": "Caxias",
  "address": "Rua Araão Reis, 1789, Bloco 1",
  "neighborhood": "Centro",
  "city": "Caxias",
  "state": "MA",
  "zip_code": "65604-060",
  "phone": "(00) 00000000",
  "latitude": -23.198976,
  "longitude": -45.901692
}

Retorna informações de um campus específico.

Requisição HTTP

GET https://stock.querobolsa.com.br/api/universities/<UNIVERSITY_ID>/campuses/<CAMPUS_ID>

Parâmetros da requisição

Nome Tipo Descrição
UNIVERSITY_ID path ID da universidade onde deseja realizar a ação
CAMPUS_ID path ID do campus que deseja resgatar informações

Parâmetros da resposta

Nome Tipo Descrição
id string Código identificador de campus
name string Nome do campus
university object Objeto com dados de universidade
[university] id string Código identificador de universidade
[university] name string Nome da universidade
address string Endereço do campus
neighborhood string Bairro do campus
city string Cidade do campus
state string Estado do campus
zip_code string Código CEP do campus
phone string Telefone do campus
latitude float Coordenada de latitude do campus
longitude float Coordenada de longitude do campus

Inserir campi

Exemplo de requisição

curl -X POST "https://stock.querobolsa.com.br/api/universities/65605bf0-cad2-4dc2-ae11-65c77bc36508/campuses" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json' \
  -d @campus_data.json

Exemplo da estrutura JSON esperada:

{
  "campuses": [
    {
      "name": "Caxias",
      "address": "Rua Araão Reis, 1789, Bloco 1",
      "neighborhood": "Centro",
      "city": "Caxias",
      "state": "MA",
      "zip_code": "65604-060",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    },
    {
      "name": "Sorocaba",
      "address": "Av. Independência, 210",
      "neighborhood": "Éden",
      "city": "Sorocaba",
      "state": "SP",
      "zip_code": "18087-101",
      "phone": "(00) 00000000",
      "latitude": -23.198976,
      "longitude": -45.901692
    }
  ]
}

Resposta

Status Code: 200 OK
{
  "error": false,
  "operation_id": "4e8c23c3-fab1-486d-9c0e-c49301305d94"
}

Esse endpoint cria campus em lote com informações enviadas em JSON.

Na inserção de campus, caso o ID seja enviado, o serviço irá fazer uma operação de atualização de informação, sobrescrevendo os dados enviando no modelo do banco.

Caso o ID do campus não seja enviado, uma validação com a base de dados será feita, a fim de evitar campi duplicados na nossa base.

Requisição HTTP

POST https://stock.querobolsa.com.br/api/universities/<UNIVERSITY_ID>/campuses/

Parâmetros da requisição

Nome Tipo Descrição
UNIVERSITY_ID path ID da universidade onde deseja realizar a ação

Parâmetros da requisição

Nome Tipo Descrição
campuses object array Arranjo de objetos com dados de campus
[campuses] name string Nome do campus
[campuses] address string Endereço do campus
[campuses] neighborhood string Bairro do campus
[campuses] city string Cidade do campus
[campuses] state string Estado do campus
[campuses] zip_code string Código CEP do campus
[campuses] phone string Telefone do campus
[campuses] latitude float Coordenada de latitude do campus
[campuses] longitude float Coordenada de longitude do campus

Parâmetros da resposta

Nome Tipo Descrição
error boolean Indicador de ocorrência de erro na operação
operation_id string ID da operação de estoque criada

Cursos

Atributos de curso

Alguns campos do curso possuem atributos com um conjunto restrito de valores válidos (enumeration). Esta seção aborda estes campos.

Modalidade (kind)

O atributo kind indica a modalidade do curso.

De uma forma geral, a modalidade informa a forma que o aluno irá fazer o curso.

Segue a tabela com possíveis valores para esse campo:

Valor
Presencial
EaD
EaD Mais
Flex
SEPI
Semipresencial

Grau (level)

O atributo level indica o grau do curso.

O grau é o nível do curso oferecido, ou seja, é referente ao título que o aluno irá obter após concluir o curso.

Segue a tabela com possíveis valores para esse campo:

Valor
Licenciatura (graduação)
Bacharelado (graduação)
Bacharelado + Licenciatura (graduação)
Tecnólogo (graduação)
Pós-graduação Lato Sensu
Mestrado
Doutorado
Pós-doutorado
Técnico
Profissionalizante
Curso Livre
Pré-vestibular
Ensino Fundamental
Ensino Infantil
Ensino Médio
Sequencial
Segunda Graduação
Bootcamp

Turno (shift)

O atributo shift indica o turno do curso.

O turno do curso é o período de dia que o aluno estará cursando.

Segue a tabela com possíveis valores para esse campo:

Valor
Manhã
Tarde
Noite
Integral
Virtual
Outro

Periodicidade (period_kind)

O atributo period_kind indica a periodicidade do curso.

A peridicidade é a forma como o curso está dividido e também serve para informar a duração do mesmo quando combinado com o campo max_periods, que indica a quantidade dessa periodicidade. Por exemplo: se uma entidade de curso possui o valor 6 no atributo max_periods e semestre em period_kind, isso quer dizer que é um curso com duração de 6 semestres.

Segue a tabela com possíveis valores para esse campo:

Valor
hora
dia
modulo
semanal
quinzenal
mes
trimestre
quadrimestre
semestre
ano

Listar cursos

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/universities/65605bf0-cad2-4dc2-ae11-65c77bc36508/courses" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Exemplo de retorno JSON para esta requisição

{
  "has_more": false,
  "items": [
    {
      "id": "accf676c-b200-485f-9c96-f887eae531d0",
      "campus": {
        "id": "00d9ef5a-d003-4212-99ff-c4308f18803d",
        "university": {
          "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
          "name": "UniQuero",
        },
        "name": "Caxias",
        "address": "Rua Araão Reis, 1789, Bloco 1",
        "neighborhood": "Centro",
        "city": "Caxias",
        "state": "MA",
        "zip_code": "65604-060",
        "phone": "(00) 00000000",
        "latitude": -23.198976,
        "longitude": -45.901692
      },
      "name": "MBA em Auditoria",
      "level": "Pós-graduação Lato Sensu",
      "kind": "EaD",
      "shift": "Virtual",
      "period_kind": "mes",
      "max_periods": 6,
      "enrollment_semester": "2019.1",
      "full_price": 299.99,
      "discount_percentage": 50.00,
      "price_with_discount": 149.99,
      "fixed_commercial_discount": 20.00,
      "end_date": "2019-06-30",
      "number_of_installments": 12,
      "extra_warning": "* &bull; Após garantir a bolsa, o aluno deverá entrar em contato com a faculdade pelo número (00) 0000-0000",
      "extra_benefit": "* &bull; Primeira parcela grátis"
    },
    {
      "id": "5b0a5715-f21c-43c7-9db8-1df8aa464494",
      "campus": {
        "id": "9d49f7f8-5994-40ae-a8fa-b9c9d66adef8",
        "university": {
          "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
          "name": "UniQuero",
        },
        "name": "Sorocaba",
        "address": "Av. Independência, 210",
        "neighborhood": "Éden",
        "city": "Sorocaba",
        "state": "SP",
        "zip_code": "18087-101",
        "phone": "(00) 00000000",
        "latitude": -23.198976,
        "longitude": -45.901692
      },
      "name": "Direito",
      "level": "Bacharelado (graduação)",
      "kind": "Presencial",
      "shift": "Noite",
      "period_kind": "semestre",
      "max_periods": 10,
      "enrollment_semester": "2019.1",
      "full_price": 649.00,
      "discount_percentage": 25.00,
      "price_with_discount": 486.75,
      "regressive_commercial_discount": 10.00,
      "end_date": "2019-03-31",
      "number_of_installments": 60,
      "extra_warning": "* &bull; Após garantir a bolsa, o aluno deverá entrar em contato com a faculdade pelo número (00) 0000-0000",
      "extra_benefit": "* &bull; Primeira mensalidade grátis"
    }
  ]
}

Lista todos os cursos disponibilizados pela universidade.

Cursos são retornados em páginas de até 1000 elementos, ordenadas pela última criação realizada. Se houver mais resultados, has_more retorna true indicando que é possível usar o parâmetro ending_before para consultar objetos antecessores à lista atual. Para mais informações, consulte a seção de paginação.

Requisição HTTP

GET https://stock.querobolsa.com.br/api/universities/<UNIVERSITY_ID>/courses

Parâmetros da requisição

Nome Tipo Descrição
UNIVERSITY_ID path ID da universidade onde deseja realizar a ação

Parâmetros da resposta

Nome Tipo Descrição
has_more boolean Indica se há mais elementos disponíveis antes ou após essa página
items object array Arranjo de objetos com dados de curso
id string Código identificador de curso
campus object Objeto com dados de campus do curso
[campus] id string Código identificador de campus
[campus] university object Objeto com dados de universidade
[campus] [university] id string Código identificador de universidade
[campus] [university] name string Nome da universidade
[campus] name string Nome do campus
[campus] address string Endereço do campus
[campus] neighborhood string Bairro do campus
[campus] city string Cidade do campus
[campus] state string Estado do campus
[campus] zip_code string Código CEP do campus
[campus] phone string Telefone do campus
[campus] latitude float Coordenada de latitude do campus
[campus] longitude float Coordenada de longitude do campus
level string Grau do curso. Mais informações sobre esse atributo aqui
kind string Modalidade do curso. Mais informações sobre esse atributo aqui
shift string Turno do curso. Mais informações sobre esse atributo aqui
period_kind string Periodicidade do curso. Mais informações sobre esse atributo aqui
max_periods string Quantidade de periodicidade. Mais informações sobre esse atributo aqui
enrollment_semester string Semestre de matrícula do curso
full_price float Preço do curso sem desconto
discount_percentage float Porcentagem de desconto do Quero Bolsa
price_with_discount float Preço do curso com desconto
regressive_commercial_discount float Desconto regressivo disponibilizado pela universidade. Esta parcela do desconto pode ser alterada ao longo do curso. Quando não fornecido, assume-se 0
fixed_commercial_discount float Desconto fixo disponibilizado pela instituição no seu balcão. Esta parcela do desconto não é alterado ao longo do curso. Quando não fornecido, assume-se 0
end_date string Data de término da validade da oferta
number_of_installments integer Número de parcelas que o curso será pago. Caso não informado, será considerado que o curso é pago em mensalidades e na mesma duração do mesmo.
extra_warning string Avisos sobre a bolsa. Essa informação é adquirida diretamente dos meios de comunicação da faculdade por um time da Quero Educação
extra_benefit string Benefícios adicionais da bolsa. Essa informação é adquirida diretamente dos meios de comunicação da faculdade por um time da Quero Educação

Listar cursos de um campus

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/universities/65605bf0-cad2-4dc2-ae11-65c77bc36508/courses?campus_id=00d9ef5a-d003-4212-99ff-c4308f18803d" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Exemplo de retorno JSON para esta requisição

{
  "has_more": false,
  "items": [
    {
      "id": "accf676c-b200-485f-9c96-f887eae531d0",
      "campus": {
        "id": "00d9ef5a-d003-4212-99ff-c4308f18803d",
        "university": {
          "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
          "name": "UniQuero",
        },
        "name": "Caxias",
        "address": "Rua Araão Reis, 1789, Bloco 1",
        "neighborhood": "Centro",
        "city": "Caxias",
        "state": "MA",
        "zip_code": "65604-060",
        "phone": "(00) 00000000",
        "latitude": -23.198976,
        "longitude": -45.901692
      },
      "name": "MBA em Auditoria",
      "level": "Pós-graduação Lato Sensu",
      "kind": "EaD",
      "shift": "Virtual",
      "period_kind": "mes",
      "max_periods": 6,
      "enrollment_semester": "2019.1",
      "full_price": 299.99,
      "discount_percentage": 50.00,
      "price_with_discount": 149.99,
      "fixed_commercial_discount": 20.00,
      "end_date": "2019-06-30",
      "number_of_installments": 12,
      "extra_warning": "* &bull; Após garantir a bolsa, o aluno deverá entrar em contato com a faculdade pelo número (00) 0000-0000",
      "extra_benefit": "* &bull; Primeira parcela grátis"
    }
  ]
}

Esse endpoint lista todos os cursos de um determinado campus, cujo é enviado o ID como parâmetro da requisição.

Cursos são retornados em páginas de até 1000 elementos, ordenadas pela última criação realizada. Se houver mais resultados, has_more retorna true indicando que é possível usar o parâmetro ending_before para consultar objetos antecessores à lista atual. Para mais informações, consulte a seção de paginação.

Requisição HTTP

GET https://stock.querobolsa.com.br/api/universities/<UNIVERSITY_ID>/courses?campus_id=<CAMPUS_ID>

Parâmetros da requisição

Nome Tipo Descrição
UNIVERSITY_ID path ID da universidade onde deseja realizar a ação
CAMPUS_ID path ID do campus onde deseja resgatar cursos

Parâmetros da resposta

Nome Tipo Descrição
has_more boolean Indica se há mais elementos disponíveis antes ou após essa página
items object array Arranjo de objetos com dados de curso
id string Código identificador de curso
campus object Objeto com dados de campus do curso
[campus] id string Código identificador de campus
[campus] university object Objeto com dados de universidade
[campus] [university] id string Código identificador de universidade
[campus] [university] name string Nome da universidade
[campus] name string Nome do campus
[campus] address string Endereço do campus
[campus] neighborhood string Bairro do campus
[campus] city string Cidade do campus
[campus] state string Estado do campus
[campus] zip_code string Código CEP do campus
[campus] phone string Telefone do campus
[campus] latitude float Coordenada de latitude do campus
[campus] longitude float Coordenada de longitude do campus
name string Nome do curso
level string Grau do curso. Mais informações sobre esse atributo aqui
kind string Modalidade do curso. Mais informações sobre esse atributo aqui
shift string Turno do curso. Mais informações sobre esse atributo aqui
period_kind string Periodicidade do curso. Mais informações sobre esse atributo aqui
max_periods string Quantidade de periodicidade. Mais informações sobre esse atributo aqui
enrollment_semester string Semestre de matrícula do curso
full_price float Preço do curso sem desconto
discount_percentage float Porcentagem de desconto do Quero Bolsa
price_with_discount float Preço do curso com desconto
regressive_commercial_discount float Desconto regressivo disponibilizado pela universidade. Esta parcela do desconto pode ser alterada ao longo do curso. Quando não fornecido, assume-se 0
fixed_commercial_discount float Desconto fixo disponibilizado pela instituição no seu balcão. Esta parcela do desconto não é alterado ao longo do curso. Quando não fornecido, assume-se 0
end_date string Data de término da validade da oferta
number_of_installments integer Número de parcelas que o curso será pago. Caso não informado, será considerado que o curso é pago em mensalidades e na mesma duração do mesmo.
extra_warning string Avisos sobre a bolsa. Essa informação é adquirida diretamente dos meios de comunicação da faculdade por um time da Quero Educação
extra_benefit string Benefícios adicionais da bolsa. Essa informação é adquirida diretamente dos meios de comunicação da faculdade por um time da Quero Educação

Informações de um curso específico

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/courses/accf676c-b200-485f-9c96-f887eae531d0" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Exemplo de retorno JSON para esta requisição

{
  "id": "accf676c-b200-485f-9c96-f887eae531d0",
  "campus": {
    "id": "00d9ef5a-d003-4212-99ff-c4308f18803d",
    "university": {
      "id": "65605bf0-cad2-4dc2-ae11-65c77bc36508",
      "name": "UniQuero",
    },
    "name": "Caxias",
    "address": "Rua Araão Reis, 1789, Bloco 1",
    "neighborhood": "Centro",
    "city": "Caxias",
    "state": "MA",
    "zip_code": "65604-060",
    "phone": "(00) 00000000",
    "latitude": -23.198976,
    "longitude": -45.901692
  },
  "name": "MBA em Auditoria",
  "level": "Pós-graduação Lato Sensu",
  "kind": "EaD",
  "shift": "Virtual",
  "period_kind": "mes",
  "max_periods": 6,
  "enrollment_semester": "2019.1",
  "full_price": 299.99,
  "discount_percentage": 50.00,
  "price_with_discount": 149.99,
  "fixed_commercial_discount": 20.00,
  "end_date": "2019-06-30",
  "number_of_installments": 12,
  "extra_warning": "* &bull; Após garantir a bolsa, o aluno deverá entrar em contato com a faculdade pelo número (00) 0000-0000",
  "extra_benefit": "* &bull; Primeira parcela grátis"
}

Esse endpoint traz informações de um curso específico.

Requisição HTTP

GET https://stock.querobolsa.com.br/api/universities/<UNIVERSITY_ID>/courses/<COURSE_ID>

Parâmetros da requisição

Nome Tipo Descrição
UNIVERSITY_ID path ID da universidade onde deseja realizar a ação
COURSE_ID path ID do curso que deseja resgatar informações

Parâmetros da resposta

Nome Tipo Descrição
id string Código identificador de curso
campus object Objeto com dados de campus do curso
[campus] id string Código identificador de campus
[campus] id string Código identificador de campus
[campus] university object Objeto com dados de universidade
[campus] [university] id string Código identificador de universidade
[campus] [university] name string Nome da universidade
[campus] name string Nome do campus
[campus] address string Endereço do campus
[campus] neighborhood string Bairro do campus
[campus] city string Cidade do campus
[campus] state string Estado do campus
[campus] zip_code string Código CEP do campus
[campus] phone string Telefone do campus
[campus] latitude float Coordenada de latitude do campus
[campus] longitude float Coordenada de longitude do campus
level string Grau do curso. Mais informações sobre esse atributo aqui
kind string Modalidade do curso. Mais informações sobre esse atributo aqui
shift string Turno do curso. Mais informações sobre esse atributo aqui
period_kind string Periodicidade do curso. Mais informações sobre esse atributo aqui
max_periods string Quantidade de periodicidade. Mais informações sobre esse atributo aqui
enrollment_semester string Semestre de matrícula do curso
full_price float Preço do curso sem desconto
discount_percentage float Porcentagem de desconto do Quero Bolsa
price_with_discount float Preço do curso com desconto
regressive_commercial_discount float Desconto regressivo disponibilizado pela universidade. Esta parcela do desconto pode ser alterada ao longo do curso. Quando não fornecido, assume-se 0
fixed_commercial_discount float Desconto fixo disponibilizado pela instituição no seu balcão. Esta parcela do desconto não é alterado ao longo do curso. Quando não fornecido, assume-se 0
end_date string Data de término da validade da oferta
number_of_installments integer Número de parcelas que o curso será pago. Caso não informado, será considerado que o curso é pago em mensalidades e na mesma duração do mesmo.
extra_warning string Avisos sobre a bolsa. Essa informação é adquirida diretamente dos meios de comunicação da faculdade por um time da Quero Educação
extra_benefit string Benefícios adicionais da bolsa. Essa informação é adquirida diretamente dos meios de comunicação da faculdade por um time da Quero Educação

Inserir cursos

Exemplo de requisição

curl -X POST "https://stock.querobolsa.com.br/api/universities/65605bf0-cad2-4dc2-ae11-65c77bc36508/courses" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json' \
  -d @course_data.json

Exemplo da estrutura JSON esperada:

{
  "courses": [
    {
      "campus_id": "00d9ef5a-d003-4212-99ff-c4308f18803d",
      "name": "MBA em Auditoria",
      "level": "Pós-graduação Lato Sensu",
      "kind": "EaD",
      "shift": "Virtual",
      "period_kind": "mes",
      "max_periods": 6,
      "enrollment_semester": "2019.1",
      "full_price": 299.99,
      "discount_percentage": 50.00,
      "fixed_commercial_discount": 20.00,
      "regressive_commercial_discount": 10.00,
      "end_date": "2019-06-30",
      "number_of_installments": 12
    },
    {
      "campus_id": "9d49f7f8-5994-40ae-a8fa-b9c9d66adef8",
      "name": "Direito",
      "level": "Bacharelado (graduação)",
      "kind": "Presencial",
      "shift": "Noite",
      "period_kind": "semestre",
      "max_periods": 10,
      "enrollment_semester": "2019.1",
      "full_price": 649.00,
      "price_with_discount": 486.75,
      "regressive_commercial_discount": 10.00,
      "end_date": "2019-03-31"
    }
  ]
}

Resposta

Status Code: 200 OK
{
  "error": false,
  "operation_id": "4e8c23c3-fab1-486d-9c0e-c49301305d94"
}

Esse endpoint cria cursos em lote com informações enviadas em JSON.

Observação: Na hora da inserção, apenas um dos campos discount_percentage ou price_with_discount pode ser enviado no mesmo objeto.

Requisição HTTP

POST https://stock.querobolsa.com.br/api/universities/<UNIVERSITY_ID>/courses

Parâmetros da requisição

Nome Tipo Descrição
UNIVERSITY_ID path ID da universidade onde deseja realizar a ação

Parâmetros da requisição

Nome Tipo Descrição
courses object array Arranjo de objetos com dados de curso
[courses] campus_id string Código identificador de campus
[courses] name string Nome do curso
[courses] level string Grau do curso. Mais informações sobre esse atributo aqui
[courses] kind string Modalidade do curso. Mais informações sobre esse atributo aqui
[courses] shift string Turno do curso. Mais informações sobre esse atributo aqui
[courses] period_kind string Periodicidade do curso. Mais informações sobre esse atributo aqui
[courses] max_periods string Quantidade de periodicidade. Mais informações sobre esse atributo aqui
[courses] enrollment_semester string Semestre de matrícula do curso
[courses] full_price float Preço do curso sem desconto
[courses] discount_percentage float Porcentagem de desconto do Quero Bolsa.
[courses] price_with_discount float Preço do curso com desconto
[courses] regressive_commercial_discount float Desconto regressivo disponibilizado pela universidade. Esta parcela do desconto pode ser alterada ao longo do curso. Quando não fornecido, assume-se 0
[courses] fixed_commercial_discount float Desconto fixo disponibilizado pela instituição no seu balcão. Esta parcela do desconto não é alterado ao longo do curso. Quando não fornecido, assume-se 0
[courses] end_date string Data de término da validade da oferta
[courses] number_of_installments integer Número de parcelas que o curso será pago. Caso não informado, será considerado que o curso é pago em mensalidades e na mesma duração do mesmo.

Parâmetros da resposta

Nome Tipo Descrição
error boolean Indicador de ocorrência de erro na operação
operation_id string ID da operação de estoque criada

Operações de estoque

Todas as operações de atualização do estoque são feitas em processos assíncronos. Para ter informações do progresso e estado atual da operação, é fornecido um identificador único da operação no fim de toda ação de atualização da API.

Com esse ID, é possível saber o estado atual da operação, quantas inserções foram feitas com sucesso, quantas inserções tiveram falhas ao serem executadas, entre outras informações.

Atributos de operações de estoque

As entidades de operação de estoque possuem atributos que seguem padrões de preenchimento. Nessa seção, vamos conferir quais são esses atributos e os valores possíveis de cada um.

Status

As operações de estoque têm um estado e esse estado muda conforme a operação é executada.

Lista de valores possíveis do campo status:

Valor Descrição
created Operação criada
validating Operação em processo de validação
validation_ok Operação validada com sucesso
validation_error Erro ao validar a operação
applying Aplicando operação na base de dados
success Operação aplicada com sucesso
error Erro ao aplicar operação

Informações de uma operação de estoque específica

Exemplo de requisição

curl "https://stock.querobolsa.com.br/api/stock_operations/4e8c23c3-fab1-486d-9c0e-c49301305d94" \
  -H 'Authorization: Bearer ##########' \
  -H 'Content-Type: application/json'

Exemplo de retorno JSON para esta requisição:

{
  "id": "4e8c23c3-fab1-486d-9c0e-c49301305d94",
  "status": "success",
  "success_count": 2,
  "error_count": 0,
  "validation_success_count": 2,
  "validation_error_count": 0,
  "created_at": "2019-04-10T03:15:44Z",
  "finished_at": "2019-04-10T03:16:15Z"
}

Retorna dados de operação de estoque específica.

Requisição HTTP

GET https://stock.querobolsa.com.br/api/stock_operations/<STOCK_OPERATION_ID>

Parâmetros da requisição

Nome Tipo Descrição
STOCK_OPERATION_ID path ID da universidade onde deseja realizar a ação

Parâmetros da resposta

Nome Tipo Descrição
id string Código identificador de operação de estoque
status string Estado atual da operação de estoque
success_count integer Número de operações no banco de dados realizadas com sucesso
error_count integer Número de operações no banco de dados realizadas que falharam
validation_success_count integer Número de operações no banco de dados que foram validadas com sucesso
validation_error_count integer Número de validações de operações no banco de dados que falharam
created_at string Data e hora combinadas da criação da operação de estoque em formato UTC ISO 8601
finished_at string Data e hora combinadas da finalização da operação de estoque em formato UTC ISO 8601

Erros

De maneira geral, o Quero Bolsa interpreta as respostas dos serviços de acordo com a especificação abaixo:

Código de erro Descrição
400 Erro de validação dos parâmetros de entrada
401 Cliente do serviço não enviou token de autenticação
403 Cliente do serviço não tem permissão para acessar
404 Dado não encontrado com o caminho ou parâmetros fornecidos
Demais status Serão considerados erros internos do servidor. Entre em contato com o setor de tecnologia do Quero Bolsa.