{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/kognitos/main/json-schema/kognitos-v1-guide-entry-schema.json",
  "title": "A troubleshooting guide entry for an automation",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/kognitos-openapi.yml#/components/schemas/v1GuideEntry",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "title": "Resource name\nFormat: organizations/{organization_id}/workspaces/{workspace_id}/automations/{automation_id}/guideEntries/{guide_entry_id}"
    },
    "content": {
      "type": "string",
      "description": "Markdown-formatted entry content\nDeprecated: Use resolution_steps and resolution_code instead."
    },
    "source_exception": {
      "type": "string",
      "title": "Exception that led to this entry's creation"
    },
    "source_run": {
      "type": "string",
      "title": "Run where this entry was first created"
    },
    "create_time": {
      "type": "string",
      "format": "date-time",
      "title": "Creation timestamp",
      "readOnly": true
    },
    "update_time": {
      "type": "string",
      "format": "date-time",
      "title": "Last update timestamp",
      "readOnly": true
    },
    "delete_time": {
      "type": "string",
      "format": "date-time",
      "description": "The time when this guide entry was soft-deleted.\nIf not set, the entry has not been deleted.\nSoft-deleted entries are not physically removed but marked as deleted.\nAlways set the state to STATE_ARCHIVED whenever the entry is soft-deleted.",
      "readOnly": true
    },
    "title": {
      "type": "string",
      "description": "Title of the guide entry\nMarked as optional for backwards compatibility.\nCan be set when creating or updating the guide entry."
    },
    "automation": {
      "type": "string",
      "title": "The automation that the guide entry belongs to.\nFormat: organizations/{organization}/workspaces/{workspace}/automations/{automation}",
      "readOnly": true
    },
    "root_cause": {
      "type": "string",
      "description": "Root cause analysis explaining why the exception occurred.\nThis provides technical context about what caused the issue.\nMarked as optional for backwards compatibility."
    },
    "state": {
      "$ref": "#/$defs/v1GuideEntryState"
    },
    "version": {
      "type": "string",
      "title": "Semantic version of this specific version of the guide entry (format: major.minor).\nIncremented each time the guide entry is updated.\nExamples: \"0.1\", \"1.0\", \"1.1\", \"2.0\"",
      "readOnly": true
    },
    "resolution_steps": {
      "type": "string",
      "description": "Human-readable explanation of the resolution action and steps.\nGitHub Flavored Markdown (GFM) formatted.\n\nResolution Field Guidelines:\n- At least one of resolution_steps, resolution_code, or resolution_notes should be present\n  for the guide entry to be useful. Entries with none of these fields are considered incomplete.\n- These fields are complementary and can be used together:\n  - resolution_steps: The primary resolution instructions\n  - resolution_code: Supporting code examples\n  - resolution_notes: Additional context or caveats"
    },
    "resolution_code": {
      "type": "string",
      "description": "Example code illustrating how this type of exception was resolved.\nServes as a reference when handling similar exceptions in future runs.\nMay require adaptation based on specific context and should not be applied verbatim."
    },
    "resolution_notes": {
      "type": "string",
      "description": "Additional notes, caveats, or context about the resolution.\nGitHub Flavored Markdown (GFM) formatted.\nUse for edge cases, warnings, or supplementary information."
    }
  },
  "$defs": {
    "v1GuideEntryState": {
      "type": "string",
      "enum": [
        "STATE_UNSPECIFIED",
        "STATE_PENDING_APPROVAL",
        "STATE_APPROVED",
        "STATE_REJECTED",
        "STATE_ARCHIVED"
      ],
      "default": "STATE_UNSPECIFIED",
      "description": "The state of a guide entry.\n\n - STATE_UNSPECIFIED: The state is not specified.\n - STATE_PENDING_APPROVAL: The guide entry is pending approval.\n - STATE_APPROVED: The guide entry is approved.\n - STATE_REJECTED: The guide entry is rejected.\n - STATE_ARCHIVED: The guide entry is archived."
    }
  }
}