{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A card: a tree of blocks bound to named sources, optionally with a sandboxed module. Public, so any board can add it by its AT URI; each board's settings for it live in a private cardInstance.",
      "key": "tid",
      "record": {
        "properties": {
          "blocks": {
            "items": {
              "refs": [
                "family.pardy.familytime.card.defs#stack",
                "family.pardy.familytime.card.defs#row",
                "family.pardy.familytime.card.defs#section",
                "family.pardy.familytime.card.defs#heading",
                "family.pardy.familytime.card.defs#list",
                "family.pardy.familytime.card.defs#item"
              ],
              "type": "union"
            },
            "maxLength": 50,
            "minLength": 1,
            "type": "array"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "maxLength": 1000,
            "type": "string"
          },
          "module": {
            "ref": "#module",
            "type": "ref"
          },
          "network": {
            "description": "The only places the module may fetch from.",
            "items": {
              "ref": "#network",
              "type": "ref"
            },
            "maxLength": 8,
            "type": "array"
          },
          "properties": {
            "description": "Settings each board fills in when it adds the card.",
            "items": {
              "ref": "#property",
              "type": "ref"
            },
            "maxLength": 32,
            "type": "array"
          },
          "sources": {
            "items": {
              "ref": "family.pardy.familytime.card.defs#source",
              "type": "ref"
            },
            "maxLength": 20,
            "type": "array"
          },
          "title": {
            "maxLength": 100,
            "type": "string"
          }
        },
        "required": [
          "title",
          "blocks",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "module": {
      "description": "JavaScript defining view(ctx), run sandboxed on the server (QuickJS in wasm). fetch() inside it is an effect the host carries out.",
      "properties": {
        "source": {
          "maxLength": 64000,
          "type": "string"
        }
      },
      "required": [
        "source"
      ],
      "type": "object"
    },
    "network": {
      "properties": {
        "baseUrl": {
          "format": "uri",
          "maxLength": 500,
          "type": "string"
        },
        "name": {
          "maxLength": 100,
          "type": "string"
        }
      },
      "required": [
        "baseUrl",
        "name"
      ],
      "type": "object"
    },
    "property": {
      "properties": {
        "description": {
          "maxLength": 500,
          "type": "string"
        },
        "hosts": {
          "description": "For secrets: the only hosts the value may be sent to (by the host, never the module).",
          "items": {
            "maxLength": 253,
            "type": "string"
          },
          "type": "array"
        },
        "label": {
          "maxLength": 100,
          "type": "string"
        },
        "name": {
          "maxLength": 32,
          "type": "string"
        },
        "required": {
          "type": "boolean"
        },
        "type": {
          "knownValues": [
            "text",
            "number",
            "datetime",
            "secret"
          ],
          "type": "string"
        }
      },
      "required": [
        "name",
        "label",
        "type"
      ],
      "type": "object"
    }
  },
  "id": "family.pardy.familytime.card",
  "lexicon": 1
}
