{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Declares the author's hub: where it is, and which key speaks for it. One record does discovery, authentication and revocation — update or delete it and the old key is dead.",
      "key": "literal:self",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "endpoint": {
            "description": "Base URL of the hub. Where other hubs send federated requests.",
            "format": "uri",
            "type": "string"
          },
          "publicKey": {
            "description": "Public half of the hub's federation signing key, as a JWK.",
            "properties": {
              "alg": {
                "type": "string"
              },
              "crv": {
                "type": "string"
              },
              "kid": {
                "type": "string"
              },
              "kty": {
                "type": "string"
              },
              "use": {
                "type": "string"
              },
              "x": {
                "type": "string"
              },
              "y": {
                "type": "string"
              }
            },
            "required": [
              "kty",
              "crv",
              "x",
              "y",
              "kid",
              "alg",
              "use"
            ],
            "type": "object"
          },
          "updatedAt": {
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "endpoint",
          "publicKey",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "computer.haha.san.hub",
  "lexicon": 1
}
