{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/opentext-cybersecurity/main/json-schema/opentext-cybersecurity-scan-schema.json",
  "title": "Scan",
  "description": "Scan",
  "x-generated": "2026-10-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/opentext-cybersecurity-releases-api-openapi.yml#/components/schemas/Scan",
  "type": "object",
  "properties": {
    "applicationId": {
      "format": "int32",
      "description": "The application id",
      "type": "integer"
    },
    "applicationName": {
      "description": "The application name",
      "type": "string"
    },
    "releaseId": {
      "format": "int32",
      "description": "The release id",
      "type": "integer"
    },
    "releaseName": {
      "description": "The release name",
      "type": "string"
    },
    "scanId": {
      "format": "int32",
      "description": "The scan id",
      "type": "integer"
    },
    "scanTypeId": {
      "format": "int32",
      "description": "The scan type id. Values can be obtained by calling GET /api/v3/lookup-items?type=ScanTypes",
      "type": "integer"
    },
    "scanType": {
      "description": "The scan type. Values can be obtained by calling GET /api/v3/lookup-items?type=ScanTypes",
      "type": "string"
    },
    "assessmentTypeId": {
      "format": "int32",
      "description": "The assessment type id. Values can be obtained by calling GET /api/v3/releases/{releaseId}/assessment-types",
      "type": "integer"
    },
    "assessmentTypeName": {
      "description": "The assessment type name. Values can be obtained by calling GET /api/v3/releases/{releaseId}/assessment-types",
      "type": "string"
    },
    "analysisStatusTypeId": {
      "format": "int32",
      "description": "The analysis status type id. Values can be obtained by calling GET /api/v3/lookup-items?type=AnalysisStatusTypes",
      "type": "integer"
    },
    "analysisStatusType": {
      "description": "The analysis status type. Values can be obtained by calling GET /api/v3/lookup-items?type=AnalysisStatusTypes",
      "type": "string"
    },
    "startedDateTime": {
      "format": "date-time",
      "description": "The scan started date time",
      "type": "string"
    },
    "completedDateTime": {
      "format": "date-time",
      "description": "The scan completed date time",
      "type": "string"
    },
    "totalIssues": {
      "format": "int32",
      "description": "Total number of issues",
      "type": "integer"
    },
    "issueCountCritical": {
      "format": "int32",
      "description": "Total number of critical issues",
      "type": "integer"
    },
    "issueCountHigh": {
      "format": "int32",
      "description": "Total number of high issues",
      "type": "integer"
    },
    "issueCountMedium": {
      "format": "int32",
      "description": "Total number of medium issues",
      "type": "integer"
    },
    "issueCountLow": {
      "format": "int32",
      "description": "Total number of low issues",
      "type": "integer"
    },
    "starRating": {
      "format": "int32",
      "description": "The star rating",
      "type": "integer"
    },
    "notes": {
      "description": "Scan notes",
      "type": "string"
    },
    "isFalsePositiveChallenge": {
      "description": "Indicates if the scan is a false positive challenge",
      "type": "boolean"
    },
    "isRemediationScan": {
      "description": "Indicates if the scan is a remediation scan",
      "type": "boolean"
    },
    "entitlementId": {
      "format": "int32",
      "description": "The entitlement id used for the given scan",
      "type": "integer"
    },
    "entitlementUnitsConsumed": {
      "format": "int32",
      "description": "The number of entitlement units used for the given scan",
      "type": "integer"
    },
    "isSubscriptionEntitlement": {
      "description": "Indicates if the entitlement used for the given scan is a subscription entitlement",
      "type": "boolean"
    },
    "pauseDetails": {
      "description": "The details for each time the scan has been paused/resumed.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/ScanPauseDetail"
      }
    },
    "cancelReason": {
      "description": "Cancel Reason",
      "type": "string"
    },
    "analysisStatusReasonNotes": {
      "description": "The Analysis Status Reason Notes",
      "type": "string"
    },
    "scanMethodTypeId": {
      "format": "int32",
      "description": "The scan method type id. Values can be obtained by calling GET /api/v3/lookup-items?type=ScanMethodTypes",
      "type": "integer"
    },
    "scanMethodTypeName": {
      "description": "The scan method type name. Values can be obtained by calling GET /api/v3/lookup-items?type=ScanMethodTypes",
      "type": "string"
    },
    "scanPolicyTypeId": {
      "format": "int32",
      "description": "The scan policy type id. Values can be obtained by calling GET /api/v3/lookup-items?type=ScanPolicyTypes",
      "type": "integer"
    },
    "scanPolicyTypeName": {
      "description": "The scan policy type name. Values can be obtained by calling GET /api/v3/lookup-items?type=ScanPolicyTypes",
      "type": "string"
    },
    "scanTool": {
      "description": "The tool used for scanning",
      "type": "string"
    },
    "scanToolVersion": {
      "description": "The version for the scan tool used for scanning",
      "type": "string"
    },
    "attributes": {
      "description": "Scan attributes",
      "type": "array",
      "items": {
        "$ref": "#/$defs/ApplicationAttributeExtended"
      }
    }
  },
  "$defs": {
    "ApplicationAttributeExtended": {
      "description": "Application Attribute Extended",
      "type": "object",
      "properties": {
        "name": {
          "description": "Name of the attribute",
          "type": "string"
        },
        "id": {
          "format": "int32",
          "description": "Id of the attribute",
          "type": "integer"
        },
        "value": {
          "description": "Value of the attribute",
          "type": "string"
        }
      }
    },
    "ScanPauseDetail": {
      "description": "Scan Pause Details",
      "type": "object",
      "properties": {
        "pausedOn": {
          "format": "date-time",
          "description": "The scan paused date/time.",
          "type": "string"
        },
        "reason": {
          "description": "The reason the scan was paused.",
          "type": "string"
        },
        "notes": {
          "description": "Optional notes regarding the scan paused.",
          "type": "string"
        }
      }
    }
  }
}