{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schema.govfresh.com/v1/meetings/agenda-item.schema.json",
  "title": "AgendaItem",
  "description": "One numbered piece of business at a meeting.",
  "type": "object",
  "properties": {
    "@id": {
      "type": "string",
      "format": "iri",
      "description": "This agenda item's own dereferenceable identifier."
    },
    "@type": {
      "const": "AgendaItem",
      "description": "Always `AgendaItem` - minted as a subclass of `schema:ListItem`, which already supplies ordering."
    },
    "name": {
      "type": "string",
      "description": "The item's short title as it appears on the agenda, e.g. 'Approval of minutes'."
    },
    "description": {
      "type": "string",
      "description": "A longer plain-language summary of the item, when the name alone isn't enough."
    },
    "position": {
      "type": [
        "integer",
        "string"
      ],
      "description": "Order on the agenda. `schema:position` ranges over `Integer` or `Text`, and real agenda numbering is frequently alphanumeric - '3.', 'A.', '2a.' - so a string is valid. Use the publisher's own agenda number where one exists; fall back to an ordinal only when it does not."
    },
    "identifier": {
      "type": "array",
      "items": {
        "$ref": "../_core/identifier.schema.json"
      },
      "description": "Any scheme-qualified identifiers for this item beyond its `@id`."
    },
    "about": {
      "type": "array",
      "items": {
        "$ref": "../_core/reference.schema.json"
      },
      "description": "The `Legislation` under consideration, where the item concerns one - the hinge between the meetings profile and the code profile, so a law's passage can be traced to the sitting that passed it and the vote that carried it."
    },
    "result": {
      "type": "string",
      "description": "What the body decided. Absent means not yet decided.",
      "enum": [
        "adopted",
        "rejected",
        "deferred",
        "withdrawn",
        "referred",
        "amended",
        "noAction",
        "received"
      ]
    },
    "voteEvent": {
      "type": "array",
      "items": {
        "$ref": "vote-event.schema.json"
      },
      "description": "Votes taken on this item. More than one is normal: an amendment, then the main motion."
    },
    "attachment": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "iri"
      },
      "description": "Supporting documents for this item - a staff report, a proposed ordinance's text."
    },
    "isPartOf": {
      "$ref": "../_core/reference.schema.json",
      "description": "The `Meeting`, when the item is published standalone."
    }
  },
  "required": [
    "@type",
    "name",
    "position"
  ],
  "additionalProperties": true
}
