{
  "$schema": "https://threagile.io/schema#",
  "id": "https://threagile.io/schema.json",
  "title": "Threagile",
  "description": "Agile Threat Modeling",
  "type": "object",
  "properties": {
    "threagile_version": {
      "description": "Version of the Threagile toolkit",
      "type": "string"
    },
    "title": {
      "description": "Title of the model",
      "type": "string"
    },
    "date": {
      "description": "Date of the model",
      "type": [
        "string",
        "null"
      ],
      "format": "date"
    },
    "author": {
      "description": "Author of the model",
      "type": "object",
      "properties": {
        "name": {
          "description": "Author name",
          "type": [
            "string",
            "null"
          ]
        },
        "homepage": {
          "description": "Author homepage",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "name"
      ]
    },
    "management_summary_comment": {
      "description": "Individual management summary for the report",
      "type": [
        "string",
        "null"
      ]
    },
    "business_criticality": {
      "description": "Business criticality of the target",
      "type": "string",
      "enum": [
        "archive",
        "operational",
        "important",
        "critical",
        "mission-critical"
      ]
    },
    "business_overview": {
      "description": "Individual business overview for the report",
      "type": "object",
      "properties": {
        "description": {
          "description": "Individual business overview for the report",
          "type": [
            "string",
            "null"
          ]
        },
        "images": {
          "description": "Custom images for the report",
          "type": [
            "array",
            "null"
          ],
          "uniqueItems": true
        }
      }
    },
    "technical_overview": {
      "description": "Individual technical overview for the report",
      "type": "object",
      "properties": {
        "description": {
          "description": "Individual technical overview for the report",
          "type": [
            "string",
            "null"
          ]
        },
        "images": {
          "description": "Custom images for the report",
          "type": [
            "array",
            "null"
          ],
          "uniqueItems": true
        }
      }
    },
    "questions": {
      "description": "Custom questions for the report",
      "type": [
        "object",
        "null"
      ],
      "uniqueItems": true
    },
    "abuse_cases": {
      "description": "Custom abuse cases for the report",
      "type": [
        "object",
        "null"
      ],
      "uniqueItems": true
    },
    "security_requirements": {
      "description": "Custom security requirements for the report",
      "type": [
        "object",
        "null"
      ],
      "uniqueItems": true
    },
    "tags_available": {
      "description": "Tags available",
      "type": [
        "array",
        "null"
      ],
      "uniqueItems": true,
      "items": {
        "type": "string"
      }
    },
    "data_assets": {
      "description": "Data assets",
      "type": "object",
      "uniqueItems": true,
      "additionalProperties": {
        "type": "object",
        "properties": {
          "id": {
            "description": "ID",
            "type": "string"
          },
          "description": {
            "description": "Description",
            "type": [
              "string",
              "null"
            ]
          },
          "usage": {
            "description": "Usage",
            "type": "string",
            "enum": [
              "business",
              "devops"
            ]
          },
          "tags": {
            "description": "Tags",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "origin": {
            "description": "Origin",
            "type": [
              "string",
              "null"
            ]
          },
          "owner": {
            "description": "Owner",
            "type": [
              "string",
              "null"
            ]
          },
          "quantity": {
            "description": "Quantity",
            "type": "string",
            "enum": [
              "very-few",
              "few",
              "many",
              "very-many"
            ]
          },
          "confidentiality": {
            "description": "Confidentiality",
            "type": "string",
            "enum": [
              "public",
              "internal",
              "restricted",
              "confidential",
              "strictly-confidential"
            ]
          },
          "integrity": {
            "description": "Integrity",
            "type": "string",
            "enum": [
              "archive",
              "operational",
              "important",
              "critical",
              "mission-critical"
            ]
          },
          "availability": {
            "description": "Availability",
            "type": "string",
            "enum": [
              "archive",
              "operational",
              "important",
              "critical",
              "mission-critical"
            ]
          },
          "justification_cia_rating": {
            "description": "Justification of the rating",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "description",
          "usage",
          "quantity",
          "confidentiality",
          "integrity",
          "availability"
        ]
      }
    },
    "technical_assets": {
      "description": "Technical assets",
      "type": "object",
      "uniqueItems": true,
      "additionalProperties": {
        "type": "object",
        "properties": {
          "id": {
            "description": "ID",
            "type": "string"
          },
          "description": {
            "description": "Description",
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "description": "Type",
            "type": "string",
            "enum": [
              "external-entity",
              "process",
              "datastore"
            ]
          },
          "usage": {
            "description": "Usage",
            "type": "string",
            "enum": [
              "business",
              "devops"
            ]
          },
          "used_as_client_by_human": {
            "description": "Used as client by human",
            "type": "boolean"
          },
          "out_of_scope": {
            "description": "Out of scope",
            "type": "boolean"
          },
          "justification_out_of_scope": {
            "description": "Justification of out of scope",
            "type": [
              "string",
              "null"
            ]
          },
          "size": {
            "description": "Size",
            "type": "string",
            "enum": [
              "system",
              "service",
              "application",
              "component"
            ]
          },
          "technology": {
            "description": "Technology",
            "type": "string",
            "enum": [
              "unknown-technology",
              "client-system",
              "browser",
              "desktop",
              "mobile-app",
              "devops-client",
              "web-server",
              "web-application",
              "application-server",
              "database",
              "file-server",
              "local-file-system",
              "erp",
              "cms",
              "web-service-rest",
              "web-service-soap",
              "ejb",
              "search-index",
              "search-engine",
              "service-registry",
              "reverse-proxy",
              "load-balancer",
              "build-pipeline",
              "sourcecode-repository",
              "artifact-registry",
              "code-inspection-platform",
              "monitoring",
              "ldap-server",
              "container-platform",
              "batch-processing",
              "event-listener",
              "identity-provider",
              "identity-store-ldap",
              "identity-store-database",
              "tool",
              "cli",
              "task",
              "function",
              "gateway",
              "iot-device",
              "message-queue",
              "stream-processing",
              "service-mesh",
              "data-lake",
              "report-engine",
              "ai",
              "mail-server",
              "vault",
              "hsm",
              "waf",
              "ids",
              "ips",
              "scheduler",
              "mainframe",
              "block-storage",
              "library"
            ]
          },
          "tags": {
            "description": "Tags",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "internet": {
            "description": "Internet",
            "type": "boolean"
          },
          "machine": {
            "description": "Machine",
            "type": "string",
            "enum": [
              "physical",
              "virtual",
              "container",
              "serverless"
            ]
          },
          "encryption": {
            "description": "Encryption",
            "type": "string",
            "enum": [
              "none",
              "transparent",
              "data-with-symmetric-shared-key",
              "data-with-asymmetric-shared-key",
              "data-with-enduser-individual-key"
            ]
          },
          "owner": {
            "description": "Owner",
            "type": [
              "string",
              "null"
            ]
          },
          "confidentiality": {
            "description": "Confidentiality",
            "type": "string",
            "enum": [
              "public",
              "internal",
              "restricted",
              "confidential",
              "strictly-confidential"
            ]
          },
          "integrity": {
            "description": "Integrity",
            "type": "string",
            "enum": [
              "archive",
              "operational",
              "important",
              "critical",
              "mission-critical"
            ]
          },
          "availability": {
            "description": "Availability",
            "type": "string",
            "enum": [
              "archive",
              "operational",
              "important",
              "critical",
              "mission-critical"
            ]
          },
          "justification_cia_rating": {
            "description": "Justification of the rating",
            "type": [
              "string",
              "null"
            ]
          },
          "multi_tenant": {
            "description": "Multi tenant",
            "type": "boolean"
          },
          "redundant": {
            "description": "Redundant",
            "type": "boolean"
          },
          "custom_developed_parts": {
            "description": "Custom developed parts",
            "type": "boolean"
          },
          "data_assets_processed": {
            "description": "Data assets processed",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "data_assets_stored": {
            "description": "Data assets stored",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "data_formats_accepted": {
            "description": "Data formats accepted",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "json",
                "xml",
                "serialization",
                "file",
                "csv"
              ]
            }
          },
          "diagram_tweak_order": {
            "description": "diagram tweak order (affects left to right positioning)",
            "type": "integer"
          },
          "communication_links": {
            "description": "Communication links",
            "type": [
              "object",
              "null"
            ],
            "uniqueItems": true,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "target": {
                  "description": "Target",
                  "type": "string"
                },
                "description": {
                  "description": "Description",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "protocol": {
                  "description": "Protocol",
                  "type": "string",
                  "enum": [
                    "unknown-protocol",
                    "http",
                    "https",
                    "ws",
                    "wss",
                    "reverse-proxy-web-protocol",
                    "reverse-proxy-web-protocol-encrypted",
                    "mqtt",
                    "jdbc",
                    "jdbc-encrypted",
                    "odbc",
                    "odbc-encrypted",
                    "sql-access-protocol",
                    "sql-access-protocol-encrypted",
                    "nosql-access-protocol",
                    "nosql-access-protocol-encrypted",
                    "binary",
                    "binary-encrypted",
                    "text",
                    "text-encrypted",
                    "ssh",
                    "ssh-tunnel",
                    "smtp",
                    "smtp-encrypted",
                    "pop3",
                    "pop3-encrypted",
                    "imap",
                    "imap-encrypted",
                    "ftp",
                    "ftps",
                    "sftp",
                    "scp",
                    "ldap",
                    "ldaps",
                    "jms",
                    "nfs",
                    "smb",
                    "smb-encrypted",
                    "local-file-access",
                    "nrpe",
                    "xmpp",
                    "iiop",
                    "iiop-encrypted",
                    "jrmp",
                    "jrmp-encrypted",
                    "in-process-library-call",
                    "container-spawning"
                  ]
                },
                "authentication": {
                  "description": "Authentication",
                  "type": "string",
                  "enum": [
                    "none",
                    "credentials",
                    "session-id",
                    "token",
                    "client-certificate",
                    "two-factor",
                    "externalized"
                  ]
                },
                "authorization": {
                  "description": "Authorization",
                  "type": "string",
                  "enum": [
                    "none",
                    "technical-user",
                    "enduser-identity-propagation"
                  ]
                },
                "tags": {
                  "description": "Tags",
                  "type": [
                    "array",
                    "null"
                  ],
                  "uniqueItems": true,
                  "items": {
                    "type": "string"
                  }
                },
                "vpn": {
                  "description": "VPN",
                  "type": "boolean"
                },
                "ip_filtered": {
                  "description": "IP filtered",
                  "type": "boolean"
                },
                "readonly": {
                  "description": "readonly",
                  "type": "boolean"
                },
                "usage": {
                  "description": "Usage",
                  "type": "string",
                  "enum": [
                    "business",
                    "devops"
                  ]
                },
                "data_assets_sent": {
                  "description": "Data assets sent",
                  "type": [
                    "array",
                    "null"
                  ],
                  "uniqueItems": true,
                  "items": {
                    "type": "string"
                  }
                },
                "data_assets_received": {
                  "description": "Data assets received",
                  "type": [
                    "array",
                    "null"
                  ],
                  "uniqueItems": true,
                  "items": {
                    "type": "string"
                  }
                },
                "diagram_tweak_weight": {
                  "description": "diagram tweak weight",
                  "type": "integer"
                },
                "diagram_tweak_constraint": {
                  "description": "diagram tweak constraint",
                  "type": "boolean"
                }
              },
              "required": [
                "target",
                "description",
                "protocol",
                "authentication",
                "authorization",
                "vpn",
                "ip_filtered",
                "readonly",
                "usage",
                "data_assets_sent",
                "data_assets_received"
              ]
            }
          }
        },
        "required": [
          "id",
          "description",
          "type",
          "usage",
          "used_as_client_by_human",
          "out_of_scope",
          "size",
          "technology",
          "internet",
          "machine",
          "encryption",
          "owner",
          "confidentiality",
          "integrity",
          "availability",
          "multi_tenant",
          "redundant",
          "custom_developed_parts",
          "data_assets_processed",
          "data_assets_stored",
          "data_formats_accepted",
          "communication_links"
        ]
      }
    },
    "trust_boundaries": {
      "description": "Trust boundaries",
      "type": "object",
      "uniqueItems": true,
      "additionalProperties": {
        "type": "object",
        "properties": {
          "id": {
            "description": "ID",
            "type": "string"
          },
          "description": {
            "description": "Description",
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "description": "Type",
            "type": "string",
            "enum": [
              "network-on-prem",
              "network-dedicated-hoster",
              "network-virtual-lan",
              "network-cloud-provider",
              "network-cloud-security-group",
              "network-policy-namespace-isolation",
              "execution-environment"
            ]
          },
          "tags": {
            "description": "Tags",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "technical_assets_inside": {
            "description": "Technical assets inside",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "trust_boundaries_nested": {
            "description": "Trust boundaries nested",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "description",
          "type",
          "technical_assets_inside",
          "trust_boundaries_nested"
        ]
      }
    },
    "shared_runtimes": {
      "description": "Shared runtimes",
      "type": "object",
      "uniqueItems": true,
      "additionalProperties": {
        "type": "object",
        "properties": {
          "id": {
            "description": "ID",
            "type": "string"
          },
          "description": {
            "description": "Description",
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "description": "Tags",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "technical_assets_running": {
            "description": "Technical assets running",
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "description",
          "technical_assets_running"
        ]
      }
    },
    "individual_risk_categories": {
      "description": "Individual risk categories",
      "type": [
        "object",
        "null"
      ],
      "uniqueItems": true,
      "additionalProperties": {
        "type": "object",
        "properties": {
          "id": {
            "description": "ID",
            "type": "string"
          },
          "description": {
            "description": "Description",
            "type": [
              "string",
              "null"
            ]
          },
          "impact": {
            "description": "Impact",
            "type": "string"
          },
          "asvs": {
            "description": "ASVS",
            "type": "string"
          },
          "cheat_sheet": {
            "description": "Cheat sheet",
            "type": "string"
          },
          "action": {
            "description": "Action",
            "type": "string"
          },
          "mitigation": {
            "description": "Mitigation",
            "type": "string"
          },
          "check": {
            "description": "Check",
            "type": "string"
          },
          "function": {
            "description": "Function",
            "type": "string",
            "enum": [
              "business-side",
              "architecture",
              "development",
              "operations"
            ]
          },
          "stride": {
            "description": "STRIDE",
            "type": "string",
            "enum": [
              "spoofing",
              "tampering",
              "repudiation",
              "information-disclosure",
              "denial-of-service",
              "elevation-of-privilege"
            ]
          },
          "detection_logic": {
            "description": "Detection logic",
            "type": "string"
          },
          "risk_assessment": {
            "description": "Risk assessment",
            "type": "string"
          },
          "false_positives": {
            "description": "False positives",
            "type": "string"
          },
          "model_failure_possible_reason": {
            "description": "Model failure possible reason",
            "type": "boolean"
          },
          "cwe": {
            "description": "CWE",
            "type": "integer"
          },
          "risks_identified": {
            "description": "Risks identified",
            "type": "object",
            "uniqueItems": true,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "severity": {
                  "description": "Severity",
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "elevated",
                    "high",
                    "critical"
                  ]
                },
                "exploitation_likelihood": {
                  "description": "Exploitation likelihood",
                  "type": "string",
                  "enum": [
                    "unlikely",
                    "likely",
                    "very-likely",
                    "frequent"
                  ]
                },
                "exploitation_impact": {
                  "description": "Exploitation impact",
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high",
                    "very-high"
                  ]
                },
                "data_breach_probability": {
                  "description": "Data breach probability",
                  "type": "string",
                  "enum": [
                    "improbable",
                    "possible",
                    "probable"
                  ]
                },
                "data_breach_technical_assets": {
                  "description": "Data breach technical assets",
                  "type": [
                    "array",
                    "null"
                  ],
                  "uniqueItems": true,
                  "items": {
                    "type": "string"
                  }
                },
                "most_relevant_data_asset": {
                  "description": "Most relevant data asset",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "most_relevant_technical_asset": {
                  "description": "Most relevant technical asset",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "most_relevant_communication_link": {
                  "description": "Most relevant communication link",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "most_relevant_trust_boundary": {
                  "description": "Most relevant trust boundary",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "most_relevant_shared_runtime": {
                  "description": "Most relevant shared runtime",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          }
        },
        "required": [
          "id",
          "description",
          "impact",
          "asvs",
          "cheat_sheet",
          "action",
          "mitigation",
          "check",
          "function",
          "stride",
          "detection_logic",
          "risk_assessment",
          "false_positives",
          "model_failure_possible_reason",
          "cwe",
          "risks_identified"
        ]
      }
    },
    "risk_tracking": {
      "description": "Risk tracking",
      "type": [
        "object",
        "null"
      ],
      "uniqueItems": true,
      "additionalProperties": {
        "type": "object",
        "properties": {
          "status": {
            "description": "Status",
            "type": "string",
            "enum": [
              "unchecked",
              "in-discussion",
              "accepted",
              "in-progress",
              "mitigated",
              "false-positive"
            ]
          },
          "justification": {
            "description": "Justification",
            "type": [
              "string",
              "null"
            ]
          },
          "ticket": {
            "description": "Ticket",
            "type": [
              "string",
              "null"
            ]
          },
          "date": {
            "description": "Date",
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "checked_by": {
            "description": "Checked by",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "status",
          "justification",
          "ticket",
          "date",
          "checked_by"
        ]
      }
    },
    "diagram_tweak_suppress_edge_labels": {
      "description": "Diagram tweak suppress edge labels",
      "type": [
        "boolean",
        "null"
      ]
    },
    "diagram_tweak_layout_left_to_right": {
      "description": "Diagram tweak layout left to right",
      "type": [
        "boolean",
        "null"
      ]
    },
    "diagram_tweak_edge_layout": {
      "description": "Diagram tweak edge layout",
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "",
        "ortho",
        "spline",
        "polyline",
        "false",
        "curved"
      ]
    },
    "diagram_tweak_nodesep": {
      "description": "Diagram tweak nodesep",
      "type": [
        "integer",
        "null"
      ]
    },
    "diagram_tweak_ranksep": {
      "description": "Diagram tweak ranksep",
      "type": [
        "integer",
        "null"
      ]
    },
    "diagram_tweak_invisible_connections_between_assets": {
      "description": "Diagram tweak invisible connections between assets",
      "type": [
        "array",
        "null"
      ],
      "uniqueItems": true,
      "items": {
        "type": "string"
      }
    },
    "diagram_tweak_same_rank_assets": {
      "description": "Diagram tweak same rank assets",
      "type": [
        "array",
        "null"
      ],
      "uniqueItems": true,
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "threagile_version",
    "title",
    "author",
    "business_criticality",
    "tags_available",
    "data_assets",
    "technical_assets",
    "shared_runtimes"
  ]
}