{
    "spec": "parcid/1",
    "spec_version": "0.2",
    "name": "PARCID",
    "description": "Registro abierto de identidad de lo que viaja. El SSCC abierto: un número para cada unidad, gratis, atado al objeto y compatible con GS1.",
    "registry": {
        "host": "parcid.knowyourparcel.com",
        "resolution_url_template": "https://parcid.knowyourparcel.com/{PID}",
        "api": "https://parcid.knowyourparcel.com/api/v1"
    },
    "keys": [
        {
            "kid": "reg-2026-1",
            "alg": "Ed25519",
            "public_key": "ed25519:LXNYo1Pvhzdjj7UniPF9QF9UyuelEsFtMaUm2h+faJY=",
            "status": "active",
            "created_at": "2026-11-05T21:30:53Z",
            "signs": "record_hash, statement_hash, manifest_hash (32 bytes crudos)"
        }
    ],
    "id_format": {
        "prefix": "PID",
        "version": 1,
        "alphabet": "0123456789ABCDEFGHJKMNPQRSTVWXYZ",
        "payload_bits": 60,
        "check": "ISO 7064 MOD 1021-32 (2 símbolos)",
        "example": "PID-1-7QC3-Z79D-G6RZ-8E"
    },
    "canonicalization": {
        "standard": "RFC 8785",
        "numbers": "enteros |n| ≤ 2^53 o decimales |x| < 1e9 con ≤ 6 decimales"
    },
    "transparency": {
        "ledger": "Toda acta sellada entra en un libro solo de añadir; cada día UTC se cierra en un árbol Merkle RFC 6962.",
        "anchors": "https://parcid.knowyourparcel.com/api/v1/anchors",
        "proof_template": "https://parcid.knowyourparcel.com/api/v1/parcels/{PID}/proof",
        "bitcoin": {
            "method": "OpenTimestamps",
            "calendars": [
                "https://a.pool.opentimestamps.org",
                "https://b.pool.opentimestamps.org",
                "https://a.pool.eternitywall.com"
            ]
        },
        "rfc3161": null
    },
    "export": {
        "index": "https://parcid.knowyourparcel.com/api/v1/export",
        "license": "CC0-1.0",
        "identifier": "sha256(PID)"
    },
    "status": {
        "stats": "https://parcid.knowyourparcel.com/api/v1/stats",
        "health": "https://parcid.knowyourparcel.com/api/v1/health"
    },
    "gs1": {
        "digital_link": "https://parcid.knowyourparcel.com/00/{SSCC}",
        "note": "El PID no es una clave GS1. Un SSCC enlazado públicamente resuelve a sus PIDs."
    },
    "limits": {
        "enrol_ip_month": 100,
        "enrol_device_month": 100,
        "enrol_devkey_month": 1000,
        "resolve_ip_min": 60,
        "resolve_devkey_min": 600,
        "verify_ip_min": 600,
        "owner_ip_min": 120,
        "qr_ip_min": 120,
        "export_ip_hour": 20,
        "gs1_ip_min": 60,
        "proof_ip_min": 60,
        "beacon_ip_min": 60,
        "stats_ip_min": 60,
        "reserve_device_day": 5,
        "reserve_devkey_day": 10,
        "health_ip_min": 30,
        "rotate_unit_day": 5,
        "unit_ops_day": 100,
        "export_file_ip_day": 10,
        "anon_bytes_ip_month": 1073741824,
        "anon_bytes_day": 5368709120
    },
    "max_bytes": {
        "image": 26214400,
        "video": 209715200,
        "pointcloud": 52428800,
        "total": 314572800,
        "json_body": 2097152,
        "signature": 307200
    },
    "free_tier": {
        "evidence_days": 30,
        "hashes_kept": "forever"
    },
    "terms_versions": [
        "2026-10"
    ],
    "paid_services": {
        "sightings": false,
        "vault": false
    },
    "features": {
        "comparison_1to1": false,
        "platform_attestation": false,
        "devkey_self_service": false,
        "note": "Funciones previstas y apagadas en esta versión; ver docs/RELEASE.md."
    },
    "license": {
        "spec": "CC-BY-4.0",
        "data": "CC0-1.0",
        "reference_code": "CC0-1.0",
        "resolver": "Apache-2.0"
    },
    "continuity": {
        "rule": "Si el operador deja de publicar el ancla diaria durante 90 días, cualquier espejo puede continuar el registro con la última exportación (SPEC 13).",
        "source": "https://parcid.com/codigo"
    }
}