Ir al contenido

Especificación CDS v0.1.0

Estado: Borrador (reemplazado por v0.2.0) Emisor: SignedData.Org Licencia: MIT

El Curated Data Standard (CDS) define un envoltorio universal para distribuir datos en tiempo real desde fuentes verificadas. Cada evento CDS v0.1.0 es:

  • Tipado — lleva un CDSContentType que codifica dominio, esquema y versión como una cadena tipo MIME
  • Firmado — firma RSA-PSS SHA-256 por el productor, verificable por cualquier consumidor con la clave pública del emisor
  • Con fingerprint — SHA-256 de la respuesta API upstream cruda, probando que los bytes de la fuente no fueron alterados
  • Enriquecidocontext.summary opcional generado por LLM en el idioma declarado
{
"spec_version": "0.1.0",
"id": "<uuid-v4>",
"content_type": {
"domain": "<string>",
"schema_name": "<string>",
"version": "<string>",
"encoding": "json"
},
"source": {
"id": "<source-id>",
"fingerprint": "sha256:<hex>"
},
"occurred_at": "<iso8601>",
"ingested_at": "<iso8601>",
"lang": "<bcp47>",
"payload": {},
"context": {
"summary": "<string>",
"model": "<string>",
"generated_at": "<iso8601>"
},
"integrity": {
"hash": "sha256:<hex>",
"signature": "<base64-rsa-pss>",
"signed_by": "<issuer-id>"
}
}
application/vnd.cds.<domain>.<schema>+<encoding>;v=<version>
DominioEjemplo MIME
weatherapplication/vnd.cds.weather.forecast-current+json;v=1
sports.footballapplication/vnd.cds.sports-football.match-result+json;v=1
newsapplication/vnd.cds.news.headline+json;v=1
financeapplication/vnd.cds.finance.quote-stock+json;v=1
religion.bibleapplication/vnd.cds.religion-bible.verse+json;v=1
government.brazilapplication/vnd.cds.government-brazil.diario-oficial+json;v=1
  1. Serializar a JSON canónico — sort_keys=True, UTF-8, excluyendo integrity e ingested_at
  2. hash = "sha256:" + SHA256(canonical_bytes).hexdigest()
  3. Firmar canonical_bytes con RSA-PSS (digest SHA-256, MGF1, longitud máxima de salt)
  4. Codificar la firma como base64
  5. Adjuntar IntegrityMeta { hash, signature, signed_by }

Verificación: re-serializar bytes canónicos, verificar el hash, verificar la firma RSA-PSS con la clave pública del emisor publicada en https://signed-data.org/.well-known/cds-public-key.pem.

DominioDescripción
weatherCondiciones meteorológicas y pronósticos
sports.footballPartidos de fútbol, clasificaciones, estadísticas de jugadores
newsTitulares y artículos
financeCotizaciones, precios, índices de mercado
religion.bibleVersículos y pasajes de la Biblia
government.brazilDatos del gobierno brasileño

Un SDK conforme DEBE:

  • Implementar CDSEvent con todos los campos requeridos
  • Implementar la serialización canónica excluyendo integrity e ingested_at
  • Soportar firma y verificación RSA-PSS SHA-256
  • Exponer CDSSigner, CDSVerifier y BaseIngestor

Implementaciones de referencia:

  • Python: pip install signeddata-cds
  • TypeScript: npm install @signeddata/cds-sdk

spec_version usa semver. Los cambios incompatibles incrementan la versión mayor. content_type.version versiona los esquemas de dominio de forma independiente.