{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/snow-software/json-schema/snow-software-user-schema.json",
  "title": "User",
  "description": "A discovered user in your SaaS estate.",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/snow-software-applications-api-openapi.yml#/components/schemas/User",
  "type": "object",
  "properties": {
    "country": {
      "description": "The country of the user.",
      "type": "string"
    },
    "createdDate": {
      "description": "The date the user was created.",
      "type": "string",
      "format": "date-time"
    },
    "department": {
      "description": "The department of the user.",
      "type": "string"
    },
    "discoveryTypes": {
      "description": "The unique IDs of the discovery source types where the user was detected. For information on discovery source types, see https://docs.snowsoftware.io/snow-atlas/user-documentation/saas/saas-discovery#discovery-sources.",
      "x-enumDescriptions": {
        "0": "SaaS connector - Represents integration with SaaS applications for automated data collection and management.",
        "1": "Manually added - Indicates resources or applications manually added by users without automated discovery.",
        "2": "Browser unverified - Refers to browser-based applications that have not been verified for compliance or usage.",
        "3": "SSO - Represents Single Sign-On integrations for centralized user authentication.",
        "4": "Device - Refers to physical or virtual devices managed within the IT environment.",
        "7": "Browser verified - Denotes browser-based applications that have been verified for compliance or usage.",
        "8": "CASB - Represents Cloud Access Security Broker integrations to enhance cloud security and compliance."
      },
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int32"
      }
    },
    "displayName": {
      "description": "The display name of the user.",
      "type": "string"
    },
    "email": {
      "description": "The email address of the user.",
      "type": "string"
    },
    "id": {
      "description": "The unique ID of the user.",
      "type": "string"
    },
    "isEnabled": {
      "description": "```true``` if the enabled state of the user in the discovery source is true.; otherwise, ```false```.",
      "type": "boolean"
    },
    "isInReview": {
      "description": "```true``` if user has been marked as one to be analyzed further, or as a reminder for taking action on their subscriptions; otherwise, ```false```.",
      "type": "boolean"
    },
    "isOnline": {
      "description": "```true``` if user has been marked as a SaaS user; who does not have a device that is inventoried in your organization. This is common for, for example, consultants and other temporary staff; otherwise, ```false```.",
      "type": "boolean"
    },
    "isQualified": {
      "description": "```true``` if has been marked to be included in Snow's services which incur a cost; otherwise, ```false```.",
      "type": "boolean"
    },
    "lastActive": {
      "description": "The date of last user activity in relevant applications.",
      "type": "string",
      "format": "date-time"
    },
    "licenseCount": {
      "description": "The number of subscription types assigned to the user.",
      "type": "integer",
      "format": "int32"
    },
    "potentialSavings": {
      "description": "The monthly subscription costs for users who are inactive or have no activity.",
      "type": "number",
      "format": "double"
    },
    "status": {
      "description": "The activity status of the user in relevant applications.",
      "type": "string"
    },
    "userCostPerMonth": {
      "description": "The monthly cost of the user's subscription entitlements.",
      "type": "number",
      "format": "double"
    },
    "username": {
      "description": "The username of the user.",
      "type": "string"
    },
    "totalDaysUsed": {
      "description": "The count of days the application was used by the user.",
      "type": "integer",
      "format": "int32"
    },
    "employmentStatus": {
      "description": "The employment status of the user.",
      "type": "string"
    },
    "hireDate": {
      "description": "The hire date of the user.",
      "type": "string",
      "format": "date-time"
    },
    "terminationDate": {
      "description": "The termination date of the user.",
      "type": "string",
      "format": "date-time"
    },
    "roles": {
      "description": "A collection of roles assigned to users.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "id",
    "country",
    "discoveryTypes",
    "isInReview",
    "isQualified",
    "status",
    "email",
    "department",
    "createdDate",
    "lastActive",
    "userCostPerMonth",
    "potentialSavings",
    "displayName",
    "username",
    "licenseCount",
    "isOnline",
    "totalDaysUsed",
    "employmentStatus"
  ]
}