{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "/schemas/3.0.0-rc.3/core/property.json",
  "title": "Property",
  "description": "An advertising property that can be validated via adagents.json",
  "type": "object",
  "properties": {
    "property_id": {
      "$ref": "/schemas/3.0.0-rc.3/core/property-id.json",
      "description": "Unique identifier for this property (optional). Enables referencing properties by ID instead of repeating full objects."
    },
    "property_type": {
      "$ref": "/schemas/3.0.0-rc.3/enums/property-type.json",
      "description": "Type of advertising property"
    },
    "name": {
      "type": "string",
      "description": "Human-readable property name"
    },
    "identifiers": {
      "type": "array",
      "description": "Array of identifiers for this property",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "/schemas/3.0.0-rc.3/enums/identifier-types.json",
            "description": "Type of identifier for this property"
          },
          "value": {
            "type": "string",
            "description": "The identifier value. For domain type: 'example.com' matches base domain plus www and m subdomains; 'edition.example.com' matches that specific subdomain; '*.example.com' matches ALL subdomains but NOT base domain"
          }
        },
        "required": [
          "type",
          "value"
        ],
        "additionalProperties": true
      },
      "minItems": 1
    },
    "tags": {
      "type": "array",
      "description": "Tags for categorization and grouping (e.g., network membership, content categories)",
      "items": {
        "$ref": "/schemas/3.0.0-rc.3/core/property-tag.json"
      },
      "uniqueItems": true
    },
    "supported_channels": {
      "type": "array",
      "description": "Advertising channels this property supports (e.g., ['display', 'olv', 'social']). Publishers declare which channels their inventory aligns with. Properties may support multiple channels. See the Media Channel Taxonomy for definitions.",
      "items": {
        "$ref": "/schemas/3.0.0-rc.3/enums/channels.json"
      },
      "uniqueItems": true
    },
    "publisher_domain": {
      "type": "string",
      "description": "Domain where adagents.json should be checked for authorization validation. Optional in adagents.json (file location implies domain)."
    }
  },
  "required": [
    "property_type",
    "name",
    "identifiers"
  ],
  "additionalProperties": true
}
