{
  "lexicon": 1,
  "id": "net.bisks.postwith.meeting",
  "defs": {
    "main": {
      "type": "record",
      "description": "A meeting proposal from the writer to another matched person, sent by createRecord (server-generated TID key) from a match card's \"propose a meeting\" button. The recipient's accept/decline lives in a separate net.bisks.postwith.response record referencing this one by AT-URI, not as a mutation of this record. Written and read by postwith (https://postwith.bisks.net).",
      "key": "tid",
      "record": {
        "type": "object",
        "required": ["toDid", "toHandle", "topic", "createdAt"],
        "properties": {
          "toDid": {
            "type": "string",
            "format": "did",
            "description": "DID of the person being proposed to."
          },
          "toHandle": {
            "type": "string",
            "maxLength": 400,
            "maxGraphemes": 253,
            "description": "Handle of the person being proposed to, snapshotted at proposal time (handles can change later)."
          },
          "topic": {
            "type": "string",
            "maxLength": 60,
            "knownValues": ["mentoring", "gaming", "foodie", "fitness", "books", "music", "career", "creative", "code", "coffee"],
            "description": "The shared topic this proposal is for — copied from the sender's own net.bisks.postwith.profile at proposal time. Same knownValues list as profile.topic, not a strict enum for the same reason."
          },
          "message": {
            "type": "string",
            "maxLength": 1200,
            "maxGraphemes": 300,
            "description": "Optional note attached to the proposal. Always written as a (possibly empty) string by the client rather than omitted. Bound matches the textarea's maxlength=300."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "When this proposal was sent, as an ISO 8601 datetime."
          }
        }
      }
    }
  }
}
