Join the network

Federate your catalog

Enter your domain to generate the two .well-known files to publish, then validate them live — the exact checks our crawler runs before indexing you.

1 · Publish your catalog

At https://your-airline.com/.well-known/ai-catalog.json:

ai-catalog.json
{
  "specVersion": "1.0",
  "publisher": { "name": "YOUR AIRLINE", "did": "did:web:your-airline.com" },
  "entries": [
    {
      "identifier": "urn:air:your-airline.com:server:upgrade",
      "type": "api",
      "displayName": "YOUR AIRLINE upgrade program",
      "url": "https://your-airline.com/your-upgrade-page-or-api",
      "description": "Bid and instant upgrades for YOUR AIRLINE bookings.",
      "representativeQueries": [
        "Can I upgrade my YOUR AIRLINE booking?",
        "How do I bid for an upgrade on YOUR AIRLINE?"
      ],
      "trustManifest": {
        "identity": "did:web:your-airline.com",
        "identityType": "did",
        "signature": "<detached JWS: header kid did:web:your-airline.com#key-1 — see signing note>"
      }
    }
  ]
}

2 · Publish your DID document

At https://your-airline.com/.well-known/did.json:

did.json
{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:web:your-airline.com",
  "verificationMethod": [{
    "id": "did:web:your-airline.com#key-1",
    "type": "JsonWebKey2020",
    "controller": "did:web:your-airline.com",
    "publicKeyJwk": { "kty": "OKP", "crv": "Ed25519", "x": "<base64url public key>" }
  }]
}

3 · Sign your entries

Each entry is signed with your Ed25519 key: a detached JWS over the entry's JCS (RFC 8785) bytes, with the signature placed at trustManifest.signature. Generate a keypair:

keygen
# generate an Ed25519 keypair (Node 18+)
node -e "const c=require('crypto');const{publicKey,privateKey}=c.generateKeyPairSync('ed25519');
const jwk=publicKey.export({format:'jwk'});console.log('publicKeyJwk.x:',jwk.x);
console.log('private (keep safe):',privateKey.export({type:'pkcs8',format:'pem'}).toString())"

Our crawler resolves your did:web, recomputes every signature from your own bytes, and indexes only verified entries — no callback to you, nothing to integrate. Questions: partners@upgradeagent.ai.