Desenvolvedores

Publique uma vez. Leia tudo.

Mantenha um feed atualizado e toda listagem, comparação e ranking acompanha. O mesmo catálogo pode ser lido por uma API JSON.

Como a publicação funciona

Toda fonte passa pelas mesmas quatro etapas. Nada é publicado antes de alguém da nossa equipe revisar a primeira importação.

  1. Hospede um feed

    Um arquivo PAD, um repositório ou um documento OpenAPI no seu próprio domínio.

  2. Validação

    O schema é conferido campo a campo e buscado apenas em endereços públicos.

  3. Revisão

    Novas listagens aguardam na moderação até um administrador publicá-las.

  4. Sincronização contínua

    Sincronizações agendadas captam novas versões e o ranking é recalculado a cada uma.

PAD JSON 2.0

PAD JSON 2.0

PAD JSON 2.0 é o formato recomendado: um documento por produto, descrições por idioma, preços em centavos e um webhook opcional.

lanternly.pad.json
{
  "$schema": "https://mysoftrank.com/schemas/msr-2.0.json",
  "protocol": {
    "name": "MSR JSON",
    "version": "2.0",
    "author": "Antonio Santos",
    "specification_license": "CC-BY-4.0",
    "reference_implementation_license": "MIT",
    "canonical_url": "https://mysoftrank.com/schemas/msr-2.0.json"
  },
  "pad_version": "2.0",
  "vendor": {
    "name": "Lanternly Labs",
    "website": "https://lanternly.dev",
    "country_code": "BR"
  },
  "software": {
    "slug": "lanternly",
    "name": "Lanternly",
    "kind": "saas",
    "category": "observability",
    "license_type": "freemium",
    "platforms": [
      "web",
      "linux"
    ],
    "homepage": "https://lanternly.dev",
    "integrations": [
      "kubernetes",
      "slack",
      "python"
    ],
    "pricing": {
      "model": "usage",
      "price_from_cents": 0,
      "currency": "USD"
    },
    "descriptions": {
      "en": {
        "summary": "Uptime checks that open the exact failing trace."
      },
      "pt-BR": {
        "summary": "Checagens de disponibilidade que abrem o trace exato da falha."
      },
      "es": {
        "summary": "Chequeos de disponibilidad que abren la traza exacta del fallo."
      }
    }
  },
  "release": {
    "version": "3.4.0",
    "released_on": "2026-09-15",
    "release_type": "minor",
    "notes_url": "https://lanternly.dev/changelog#3.4.0"
  },
  "webhook": {
    "url": "https://lanternly.dev/hooks/mysoftrank",
    "events": [
      "listing.published",
      "rank.changed"
    ]
  }
}

Obrigatórios: pad_version, vendor.name, software.slug, software.name e release.version. Preços são inteiros em centavos com moeda ISO 4217. Nomes, e-mails e telefones de contato são ignorados e nunca armazenados.

Licenciamento e Governança do Protocolo: A especificação do MSR JSON é de autoria de Antonio Santos e licenciada sob Creative Commons Atribuição 4.0 Internacional (CC-BY 4.0). Ferramentas, validadores e bibliotecas de referência sob Licença MIT.

PAD XML (legado)

PAD XML
O PAD XML continua funcionando Arquivos PAD XML existentes são importados como estão, pela mesma validação. Campos novos, como descrições por idioma e webhooks, existem só no PAD JSON 2.0.
<XML_DIZ_INFO>
  <Company_Info><Company_Name>Lanternly Labs</Company_Name></Company_Info>
  <Program_Info>
    <Program_Name>Lanternly</Program_Name>
    <Program_Version>3.4.0</Program_Version>
    <Program_Release_Year>2026</Program_Release_Year>
  </Program_Info>
</XML_DIZ_INFO>

GitHub, GitLab e OpenAPI

Sem arquivo PAD? Aponte o que você já publica e mapeamos para os mesmos campos da listagem.

GitHub

Releases viram versões, o resumo do README vira a descrição e os tópicos sugerem a categoria.

GitLab

Mesmo mapeamento do GitHub, incluindo instâncias próprias acessíveis por endereço público.

OpenAPI

Para produtos de API: info.version define a atualização e o documento dá o selo OpenAPI à listagem.

Webhooks assinados

Avisamos seu endpoint quando uma listagem é publicada ou muda de posição. Toda entrega é assinada com HMAC-SHA256 no cabeçalho X-MySoftRank-Signature.

  1. Leia os cabeçalhos X-MySoftRank-Signature e X-MySoftRank-Timestamp e o corpo bruto da requisição, antes de interpretar o JSON.
  2. Calcule o HMAC-SHA256 do timestamp, um ponto e o corpo bruto, usando o segredo do seu webhook.
  3. Compare com uma função de tempo constante. Rejeite a entrega quando forem diferentes.
  4. Rejeite timestamps com mais de cinco minutos para impedir reenvios maliciosos.
Exemplo de entrega
POST /hooks/mysoftrank HTTP/1.1
Content-Type: application/json
X-MySoftRank-Event: rank.changed
X-MySoftRank-Timestamp: 1789660800
X-MySoftRank-Signature: sha256=d96595d15c50f9f26d0e8a3b0f7a3fcdae6ca69ae2c3df80f829d82b591ee0da

{"event":"rank.changed","software":"lanternly","rank":{"previous":14,"current":9,"score":71.4},"computed_on":"2026-09-17"}
Validando a assinatura em Python
import hashlib, hmac

def is_valid(secret: bytes, timestamp: str, body: bytes, header: str) -> bool:
    signed = timestamp.encode() + b"." + body
    expected = "sha256=" + hmac.new(secret, signed, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, header)

API de leitura

Somente listagens publicadas. As respostas são JSON, paginadas com page e per_page.

Endpoints públicos da API
Endpoint Retorna Autenticação Limite de requisições
GET /.well-known/msr.json Manifesto e metadados autoritativos MSR JSON do MySoftRank Nenhuma Definido pelo seu plano
GET /schemas/msr-2.0.json JSON Schema oficial do MSR JSON 2.0 (Draft 2020-12) Nenhuma Definido pelo seu plano
GET /api/v1/software Softwares publicados, filtrados por categoria e texto de busca Nenhuma Definido pelo seu plano
GET /api/v1/software/{slug} Uma listagem com versões, fontes e descrições Nenhuma Definido pelo seu plano
GET /api/v1/categories Todas as categorias com a contagem de listagens Nenhuma Definido pelo seu plano
POST /api/v1/submit/pad Envia um documento PAD por URL ou corpo para moderação Token Bearer 10 requisições por minuto por endereço

Planos da API

Ler o catálogo é grátis para projetos pequenos. Planos pagos aumentam os limites e incluem licenciamento de dados em lote.

Grátis

Grátis
  • 10.000 requisições por mês
  • Até 60 requisições por minuto
  • Link de atribuição obrigatório
Fale com a gente

Licença de dados

Sob consulta
  • Sem limite mensal
  • Até 3.000 requisições por minuto
  • Exportações completas mensais e relatórios de mercado
Fale com a gente

Planos de API compram acesso aos dados, nunca uma posição melhor neles.