{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/ReleaseNoteCollection",
  "definitions": {
    "ReleaseNoteCollection": {
      "type": "object",
      "properties": {
        "release": {
          "type": "string"
        },
        "indexUrl": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": ["complete", "partial", "failed"]
        },
        "inventoryStatus": {
          "type": "string",
          "enum": ["success", "empty", "timeout", "browser_error"]
        },
        "articleCount": {
          "type": "number"
        },
        "retrievedCount": {
          "type": "number"
        },
        "failedCount": {
          "type": "number"
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "articles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReleaseNoteInventoryItem"
          }
        },
        "comparison": {
          "$ref": "#/definitions/ReleaseNoteBaselineComparison"
        }
      },
      "required": [
        "release",
        "indexUrl",
        "status",
        "inventoryStatus",
        "articleCount",
        "retrievedCount",
        "failedCount",
        "errors",
        "articles"
      ],
      "additionalProperties": false
    },
    "ReleaseNoteInventoryItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "level": {
          "type": "number"
        },
        "hierarchy": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "helpUrl": {
          "type": "string"
        },
        "developerUrl": {
          "type": "string"
        },
        "retrieval": {
          "type": "object",
          "properties": {
            "status": {
              "$ref": "#/definitions/ReleaseNoteRetrievalStatus"
            },
            "httpStatus": {
              "type": "number"
            },
            "releaseVersion": {
              "type": "string"
            },
            "contentId": {
              "type": "string"
            },
            "contentType": {
              "type": "string"
            },
            "bodyBytes": {
              "type": "number"
            },
            "bodyHash": {
              "type": "string"
            },
            "lifecycle": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ReleaseNoteLifecycleEvidence"
              }
            },
            "preservedFromBaseline": {
              "type": "boolean"
            },
            "error": {
              "type": "string"
            }
          },
          "required": ["status"],
          "additionalProperties": false
        }
      },
      "required": ["id", "title", "level", "hierarchy", "helpUrl", "developerUrl", "retrieval"],
      "additionalProperties": false
    },
    "ReleaseNoteRetrievalStatus": {
      "type": "string",
      "enum": ["not_requested", "success", "empty", "shell", "http_error", "timeout", "browser_error", "parse_error"]
    },
    "ReleaseNoteLifecycleEvidence": {
      "type": "object",
      "properties": {
        "lifecycle": {
          "$ref": "#/definitions/ReleaseNoteLifecycle"
        },
        "confidence": {
          "type": "string",
          "enum": ["high", "medium"]
        },
        "excerpt": {
          "type": "string"
        }
      },
      "required": ["lifecycle", "confidence", "excerpt"],
      "additionalProperties": false
    },
    "ReleaseNoteLifecycle": {
      "type": "string",
      "enum": ["beta", "pilot", "developer_preview", "retirement", "ga"]
    },
    "ReleaseNoteBaselineComparison": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": ["pass", "review"]
        },
        "baselineArticleCount": {
          "type": "number"
        },
        "currentArticleCount": {
          "type": "number"
        },
        "addedIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "removedIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "deltas": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReleaseNoteDelta"
          }
        },
        "reviewQueue": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReleaseNoteReviewItem"
          }
        }
      },
      "required": [
        "status",
        "baselineArticleCount",
        "currentArticleCount",
        "addedIds",
        "removedIds",
        "deltas",
        "reviewQueue"
      ],
      "additionalProperties": false
    },
    "ReleaseNoteDelta": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "added",
            "removed",
            "content_changed",
            "lifecycle_transition",
            "retrieval_failed",
            "inventory_failed"
          ]
        },
        "articleId": {
          "type": "string"
        },
        "before": {
          "type": "string"
        },
        "after": {
          "type": "string"
        },
        "preservedEvidence": {
          "type": "boolean"
        }
      },
      "required": ["type", "articleId"],
      "additionalProperties": false
    },
    "ReleaseNoteReviewItem": {
      "type": "object",
      "properties": {
        "articleId": {
          "type": "string"
        },
        "reasons": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "added",
              "removed",
              "content_changed",
              "lifecycle_transition",
              "retrieval_failed",
              "inventory_failed"
            ]
          }
        }
      },
      "required": ["articleId", "reasons"],
      "additionalProperties": false
    }
  }
}
