API ou exportação de dados

Não seria possível a disponibilização de uma API para consultar o site? Ou de repente que pudesse exportar por exemplo a nossa lista de desejos para um arquivo .csv?

A propósito parabéns pelo trabalho!

4 curtidas

Olá Josepe, bem vindo ao fórum.

Existe uma API consumida pelo próprio front-end do Compara Jogos, não a divulgo porque ela pode mudar a qualquer momento e porque um abuso poderia afetar negativamente o próprio site, então o ideal é quem tiver interesse entrar em contato mesmo. Basicamente todo acesso já existente na plataforma já passa por uma API aberta.

A URL é https://api.comparajogos.com.br/v1/graphql.

Quem tiver interesse em integrar com nossa plataforma basta responder aqui ou por mensagem privada para elucidar quaisquer dúvidas.

Um exemplo de query GraphQL (retorna os nomes dos jogos na sua lista de desejos; trocar para “OWN” para a coleção):

{
  product(where: {list_items_mine: {list: {_eq: "WISH"}}}) {
    name
  }
}

Pode ser usado qualquer client GraphQL ou pode ser feita uma requisição POST na URL citada com um corpo em JSON:

{ "query": "a query GraphQL" }

Como sua lista de desejos é atualmente uma informação privada (futuramente poderá ser pública) é necessário passar o cabeçalho de Authorization, você precisa do token do seu acesso que pode ser obtido na aba Network do DevTools do Chrome olhando alguma requisição GraphQL ou cookie do site. O fluxo de autorização OAuth também é possível programaticamente, claro.

Além dessa forma posso também avaliar a possibilidade de exportar qualquer uma das listas (desejo, coleção, alertas, etc) em algum formato específico, mas isso precisa ser melhor definido. Talvez o uso seja tão específico que a API já resolva de forma mais eficiente.

Obrigado pelo contato e pelo elogio :wink:

3 curtidas

Que fantástico!

Teria uma lista dos endpoints (querys) que podem ser chamados publicamente?

Eu gostaria de conseguir precificar o valor da minha coleção e ter um histórico de variação de preço dela e também identificar qual jogo variou mais de preço nos últimos tempos.

2 curtidas

Olá,

Preciso providenciar a documentação completa do schema GraphQL para que os usuários consigam gerar as queries sozinhos, mas mesmo assim algumas coisas podem não ser possíveis sem alguns ajustes específicos no próprio schema, depende muito do que se quer.

Essa documentação completa exige um esforço considerável para ser validada e apresentada para todos como algo consumível e, embora esteja nos planos, não é uma prioridade.

Abaixo dou um exemplo para obter a soma do menor preço de todos os itens da sua coleção e a quantidade de itens que foram somados (pois a maioria está indisponível e, portanto, não somou valor):

Query GraphQL e Resposta dos servidor

Query GraphQL:

 {
    product_price_aggregate(
      where: {
        min_price: { _is_null: false }
        product: {
          list_items: {
            user: { username: { _eq: "FranciscoFilho" } }
            list: { _eq: "OWN" }
          }
        }
      }
    ) {
      aggregate {
        sum {
          min_price
        }
        count
      }
    }
  }

Resultado:

{
  "data": {
    "product_price_aggregate": {
      "aggregate": {
        "sum": {
          "min_price": 10308.61
        },
        "count": 36
      }
    }
  }
}

Em relação ao outro tópico adianto que para termos uma visão mais interessante dessa informação, precisamos pensar em como tratar estes itens que não tem disponibilidade e, portanto, não tem preço atual para servir de parâmetro. Quando eu estiver mais próximo de pegar essa tarefa vejo esses detalhes melhor e comento lá no outro tópico para chegarmos numa solução bacana.

Quanto a ter essa informação com histórico e variação direto da API preciso avaliar melhor o schema atual, como falei acima, é provável que não seja possível extrair essa visão sem criar uma nova consulta no servidor.

1 curtida

Desde já agradeço a resposta. É fantástico seu trabalho!

Quando não estiver preço atual, poderia pegar o ultimo preço listado antes de ficar indisponível (tanto o maior quanto o menor). Acho interessante saber essa variação, tanto para a lista inteira como para cada jogo, principalmente para precificar.

No mais fico no aguardo de mais novidades. Vlw!

Boa tarde Renato, também tenho muito interesse na API de integração, para trabalhar mais na plataforma mobile, se existir um swagger ou documentação para tal, gostaria de ter acesso e para podermos conversar sobre possíveis melhorias patrocinadas

Obrigado

Olá Michel, tudo bem?

Estou vendo uma forma de documentar melhor nossa API, é em GraphQL mas encontrei um gerador que cria uma página estática ala Swagger. Seria interessante saber quais os casos de uso desejados, assim começo por onde houver maior demanda.

Quanto a possíveis melhorias pode ficar a vontade para me enviar uma mensagem privada.

Show Renato, não sei como mandar mensagem em privado heheheh mas assim que descobrir te envio. Obrigado pela atenção e parabens pelo trabalho

1 curtida

Oi! @renato

Já teve algum update na documentação?

Abraço!

Olá Vinícius, tudo bem?

Nossa API é toda em GraphQL e a documentação é essencialmente o próprio schema, mas isso não fica público ainda porque não visualizo muitos cenários onde isso pode ser interessante de forma geral.

Por exemplo, eu sei que tem gente que divulga as ofertas do Compara Jogos em canal do Telegram, substituindo o link de afiliado da Amazon daqui por um próprio, e isso só nos prejudica, já que esta comissão da Amazon é a única coisa que cobre os custos da plataforma e a mantém em pé.

Além disso, por não ter uma API pública divulgada temos maior liberdade de iterar melhorias sem nos preocuparmos com retrocompatibilidade de usuários da nossa API ou o versionamento dela.

Mas de qualquer forma, se tiver algum uso específico é só falar aqui que podemos dar uma atenção a isso.

Abraço!

2 curtidas

Certo! Isso faz sentido. Entendo perfeitamente.
A intenção era usar nos meus estudos de React Native!

Obrigado pela resposta!

Olá, tudo bem?

Essa API ainda está funcionando? Queria extrair os preços dos jogos na data atual.

Olá,

Não temos uma API pública oficial, os motivos principais já foram falados aí em cima mas posso reforçar o principal: infelizmente não temos gente suficiente para manter uma API pública e versionada, que dá um bocado de trabalho.

Também há o óbvio: já há gente usando engenharia reversa da nossa API para obter os menores preços e redistribuir isso em grupo de Telegram, por exemplo, sem atribuição à fonte e prejudicando o pouco rendimento que temos com os links de afiliados da Amazon.

Dito isso, vi também sua mensagem no chat, se quiser me chamar no privado (só clicar no meu avatar e enviar uma Mensagem ou um Chat) e quiser me explicar melhor qual seu estudo de Machine Learning, posso lhe direcionar para as queries corretas.