{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://medium.com/schemas/medium/publication.json",
  "title": "Medium Publication",
  "description": "A Medium publication that aggregates posts from multiple contributors around a shared topic or brand, including its metadata and contributor information.",
  "type": "object",
  "required": ["id", "name"],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unique identifier for the publication."
    },
    "name": {
      "type": "string",
      "description": "The name of the publication as displayed on Medium."
    },
    "description": {
      "type": "string",
      "description": "A short description of the publication's focus or mission."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The URL to the publication's homepage on Medium."
    },
    "imageUrl": {
      "type": "string",
      "format": "uri",
      "description": "The URL to the publication's logo or header image."
    },
    "contributors": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Contributor"
      },
      "description": "The list of editors and writers who contribute to the publication."
    }
  },
  "$defs": {
    "Contributor": {
      "type": "object",
      "description": "A contributor to a Medium publication with a specific editorial role.",
      "required": ["userId", "role"],
      "properties": {
        "publicationId": {
          "type": "string",
          "description": "The unique identifier of the publication the contributor belongs to."
        },
        "userId": {
          "type": "string",
          "description": "The unique identifier of the contributing user."
        },
        "role": {
          "type": "string",
          "enum": ["editor", "writer"],
          "description": "The role of the contributor within the publication. Editors can manage all content while writers can submit drafts."
        }
      }
    }
  }
}
