Desarrolladores

Publica una vez. Lee todo.

Mantén un feed al día y cada listado, comparación y clasificación lo sigue. El mismo catálogo se puede leer con una API JSON.

Cómo funciona la publicación

Toda fuente pasa por los mismos cuatro pasos. Nada se publica antes de que alguien del equipo revise la primera importación.

  1. Aloja un feed

    Un archivo PAD, un repositorio o un documento OpenAPI en tu propio dominio.

  2. Validación

    El schema se revisa campo por campo y solo se descarga de direcciones públicas.

  3. Revisión

    Los listados nuevos esperan en moderación hasta que un administrador los publica.

  4. Sincronización continua

    Las sincronizaciones programadas detectan versiones nuevas y la clasificación se recalcula en cada una.

PAD JSON 2.0

PAD JSON 2.0

PAD JSON 2.0 es el formato recomendado: un documento por producto, descripciones por idioma, precios en centavos y un 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"
    ]
  }
}

Obligatorios: pad_version, vendor.name, software.slug, software.name y release.version. Los precios son enteros en centavos con moneda ISO 4217. Nombres, correos y teléfonos de contacto se ignoran y nunca se guardan.

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 (heredado)

PAD XML
PAD XML sigue funcionando Los archivos PAD XML existentes se importan tal cual, con la misma validación. Los campos nuevos, como descripciones por idioma y webhooks, solo existen en 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 y OpenAPI

¿Sin archivo PAD? Indícanos lo que ya publicas y lo mapeamos a los mismos campos del listado.

GitHub

Los releases se vuelven versiones, el resumen del README la descripción y los topics sugieren la categoría.

GitLab

El mismo mapeo que GitHub, incluidas instancias propias accesibles en una dirección pública.

OpenAPI

Para productos de API: info.version define la frescura y el documento otorga el sello OpenAPI al listado.

Webhooks firmados

Avisamos a tu endpoint cuando un listado se publica o cambia de posición. Cada entrega se firma con HMAC-SHA256 en la cabecera X-MySoftRank-Signature.

  1. Lee las cabeceras X-MySoftRank-Signature y X-MySoftRank-Timestamp y el cuerpo en bruto, antes de interpretar el JSON.
  2. Calcula el HMAC-SHA256 del timestamp, un punto y el cuerpo en bruto, con el secreto de tu webhook.
  3. Compara con una función de tiempo constante. Rechaza la entrega si no coinciden.
  4. Rechaza timestamps de más de cinco minutos para evitar reenvíos maliciosos.
Ejemplo 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"}
Verificando la firma en 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 lectura

Solo listados publicados. Las respuestas son JSON, paginadas con page y per_page.

Endpoints públicos de la API
Endpoint Devuelve Autenticación Límite de solicitudes
GET /.well-known/msr.json Manifiesto y metadatos autoritativos MSR JSON de MySoftRank Ninguna Según tu plan de API
GET /schemas/msr-2.0.json JSON Schema oficial de MSR JSON 2.0 (Draft 2020-12) Ninguna Según tu plan de API
GET /api/v1/software Software publicado, filtrado por categoría y texto de búsqueda Ninguna Según tu plan de API
GET /api/v1/software/{slug} Un listado con versiones, fuentes y descripciones Ninguna Según tu plan de API
GET /api/v1/categories Todas las categorías con su número de listados Ninguna Según tu plan de API
POST /api/v1/submit/pad Envía un documento PAD por URL o cuerpo para moderación Token Bearer 10 solicitudes por minuto por dirección

Planes de la API

Leer el catálogo es gratis para proyectos pequeños. Los planes de pago suben los límites y añaden licencias de datos en bloque.

Gratis

Gratis
  • 10.000 solicitudes al mes
  • Hasta 60 solicitudes por minuto
  • Enlace de atribución obligatorio
Habla con nosotros

Licencia de datos

A medida
  • Sin límite mensual
  • Hasta 3.000 solicitudes por minuto
  • Exportaciones completas mensuales e informes de mercado
Habla con nosotros

Los planes de API compran acceso a los datos, nunca una mejor posición en ellos.