{
  "type": "record",
  "Aspect": {
    "name": "status",
    "schemaVersion": 3
  },
  "name": "Status",
  "namespace": "com.linkedin.pegasus2avro.common",
  "fields": [
    {
      "Searchable": {
        "fieldType": "BOOLEAN"
      },
      "type": "boolean",
      "name": "removed",
      "default": false,
      "doc": "Whether the entity has been removed (soft-deleted).\nKept for backward compatibility. When lifecycleState is set, this field is\nautomatically kept in sync: ACTIVE/DRAFT \u2192 false, REMOVED \u2192 true.\nWhen lifecycleStage is set to a stage with hideInSearch=true, this field is\nNOT automatically synced \u2014 the search layer uses lifecycleStage settings directly."
    },
    {
      "Searchable": {
        "fieldType": "KEYWORD",
        "queryByDefault": false
      },
      "java": {
        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
      },
      "type": [
        "null",
        "string"
      ],
      "name": "lifecycleStage",
      "default": null,
      "doc": "The lifecycle stage of the entity, referencing a lifecycleStageType entity.\nWhen null, the entity is in its default active state (visible in search).\nWhen set, the referenced lifecycle stage's settings determine behavior\n(e.g., hideInSearch=true excludes the entity from default search results).\n\nUsers can override default filtering by explicitly filtering on this field.",
      "Urn": "Urn"
    },
    {
      "type": [
        "null",
        {
          "type": "record",
          "name": "AuditStamp",
          "namespace": "com.linkedin.pegasus2avro.common",
          "fields": [
            {
              "type": "long",
              "name": "time",
              "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."
            },
            {
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "type": "string",
              "name": "actor",
              "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change.",
              "Urn": "Urn"
            },
            {
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "type": [
                "null",
                "string"
              ],
              "name": "impersonator",
              "default": null,
              "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor.",
              "Urn": "Urn"
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "message",
              "default": null,
              "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."
            }
          ],
          "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."
        }
      ],
      "name": "lifecycleLastUpdated",
      "default": null,
      "doc": "Attribution for the lifecycle stage transition \u2014 who moved the entity\ninto its current stage and when. Populated automatically by the\nsetLifecycleStage mutation; should be set by any code path that\nwrites the lifecycleStage field."
    },
    {
      "Searchable": {
        "fieldType": "KEYWORD",
        "queryByDefault": false
      },
      "type": [
        "null",
        {
          "type": "enum",
          "symbolDocs": {
            "ACTIVE": "Entity is active and visible in default searches and browse.\nEquivalent to Status.removed=false with no lifecycleState set.",
            "DRAFT": "Entity is a draft \u2014 hidden from default searches and browse, but not deleted.\nCan be discovered via explicit lifecycleState=DRAFT filter (e.g., eval queries).\nStatus.removed remains false.",
            "REMOVED": "Entity is soft-deleted. Hidden from all searches.\nEquivalent to Status.removed=true."
          },
          "name": "LifecycleState",
          "namespace": "com.linkedin.pegasus2avro.common",
          "symbols": [
            "ACTIVE",
            "DRAFT",
            "REMOVED"
          ],
          "doc": "The general lifecycle state of a DataHub entity.\nUsed in conjunction with the Status aspect to control entity visibility.\n\nUnlike the binary Status.removed field, LifecycleState supports intermediate\nstates that hide an entity from default searches without permanently deleting it.\n\nWhen lifecycleState is set, Status.removed is always kept in sync:\n  ACTIVE  \u2192 removed=false\n  DRAFT   \u2192 removed=false  (hidden from search, not deleted)\n  REMOVED \u2192 removed=true"
        }
      ],
      "name": "lifecycleState",
      "default": null,
      "doc": "The general lifecycle state of the entity.\nWhen null, Status.removed is the source of truth (legacy behavior).\nWhen set, this field takes precedence and removed is kept in sync.\nUse DRAFT to hide an entity from default searches without soft-deleting it."
    }
  ],
  "doc": "The lifecycle status metadata of an entity, e.g. dataset, metric, feature, etc.\nThis aspect is used to represent soft deletes conventionally."
}