Admin

Extension Updater API

Gestionar versiones y descargas de extensiones de browser desde una API JSON.

Ver /api/extensions.json

Respuesta de la API

GET /api/extensions.json devuelve un objeto JSON con cada extensión y su última versión:

{
  "com.ejemplo.extension": {
    "version": "1.2.0",
    "url": "https://github.com/user/repo/releases/download/v1.2.0/extension.zip"
  },
  "org.otra.app": {
    "version": "3.0.1",
    "url": "https://cdn.example.com/app-3.0.1.crx"
  }
}

Crear extensión

POST /api/admin/extensions.json

Registra una extensión nueva. Solo necesita el ID.

{
  "id": "com.ejemplo.extension"
}

Añadir versión

POST /api/admin/versions.json

Añade una versión a una extensión ya existente.

{
  "extId": "com.ejemplo.extension",
  "version": "1.2.0",
  "url": "https://github.com/user/repo/releases/download/v1.2.0/extension.zip"
}

Publicar versión (CI/CD)

POST /api/publish.json

Usa API Key en vez de sesión. Ideal para GitHub Actions. La extensión se crea automáticamente si no existe.

{
  "extId": "com.ejemplo.extension",
  "version": "1.2.0",
  "url": "https://github.com/user/repo/releases/download/v1.2.0/extension.zip"
}

cURL directo

curl -s -X POST https://extension-updater.pages.dev/api/publish.json \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EXT_UPDATER_KEY" \
  -d '{
    "extId": "com.ejemplo.extension",
    "version": "1.0.0",
    "url": "https://github.com/user/repo/releases/download/v1.0.0/extension.zip"
  }'

Ejemplo: GitHub Actions

Guarda la API Key como secret en el repo (Settings > Secrets > Actions):

name: Publish extension
on:
  release:
    types: [published]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Publish to Extension Updater
        run: |
          curl -s -X POST https://extension-updater.pages.dev/api/publish.json \
            -H "Content-Type: application/json" \
            -H "X-API-Key: ${{ secrets.EXT_UPDATER_KEY }}" \
            -d '{
              "extId": "com.ejemplo.extension",
              "version": "${{ github.event.release.tag_name }}",
              "url": "${{ github.event.release.html_url }}"
            }'

Errores comunes

Código Causa
401 Sesión no válida o no autenticado
404 La extensión no existe (creala primero)
409 La extensión ya existe
400 Campos requeridos faltantes o formato inválido