{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "#RecordEntity",
    "description": "A node in the graph database that represents a Record Entity, with a set of different defined common properties than standard (resource) entities.",
    "type": "object",
    "allOf": [
        {
            "$ref": "#GraphObject"
        },
        {
            "properties": {
                "name": {
                    "description": "Name of this entity",
                    "type": "string"
                },
                "displayName": {
                    "description": "Display name, e.g. a person's preferred name or an AWS account alias",
                    "type": "string"
                },
                "summary": {
                    "description": "A summary / short description of this entity.",
                    "type": "string"
                },
                "description": {
                    "description": "An extended description of this entity.",
                    "type": "string"
                },
                "classification": {
                    "description": "The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public.",
                    "type": "string",
                    "examples": ["critical", "confidential", "internal", "public"]
                },
                "category": {
                    "description": "The category of the official record",
                    "type": "string",
                    "examples": [
                        "exception",
                        "finding",
                        "hr",
                        "incident",
                        "issue",
                        "job",
                        "legal",
                        "request",
                        "policy",
                        "procedure",
                        "problem",
                        "review",
                        "risk",
                        "other"
                    ]
                },
                "webLink": {
                    "description": "Hyperlink to the location of this record, e.g. URL to a Jira issue",
                    "type": "string",
                    "format": "uri"
                },
                "content": {
                    "description": "Text content of the record/documentation",
                    "type": "string"
                },
                "open": {
                    "description": "Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record).",
                    "type": "boolean"
                },
                "public": {
                    "description": "If this is a public record. Defaults to false.",
                    "type": "boolean",
                    "default": false
                },
                "production": {
                    "description": "If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production.",
                    "type": "boolean"
                },
                "approved": {
                    "description": "If this is record has been reviewed and approved.",
                    "type": "boolean"
                },
                "approvedOn": {
                    "description": "The timestamp (in milliseconds since epoch) when this record was approved.",
                    "type": "number",
                    "format": "date-time"
                },
                "approvers": {
                    "description": "The list of approvers on the record.",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "reporter": {
                    "description": "The person or system that reported or created this record.",
                    "type": "string"
                },
                "reportedOn": {
                    "description": "The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported.",
                    "type": "number",
                    "format": "date-time"
                },
                "createdOn": {
                    "description": "The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne.",
                    "type": "number",
                    "format": "date-time"
                },
                "updatedOn": {
                    "description": "The timestamp (in milliseconds since epoch) when the entity was last updated at the source.",
                    "type": "number",
                    "format": "date-time"
                },
                "exception": {
                    "description": "Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved.",
                    "type": "boolean"
                },
                "exceptionReason": {
                    "description": "Reason / description of the exception.",
                    "type": "string"
                }
            },
            "required": ["name", "displayName"]
        }
    ]
}
