Skip to main content

JSON guidelines

Data that is exported from a third-party SaaS product must comply with the schema file generic_saas_schema.json that is provided. The SaaS - Generic connector validates the JSON file against the schema during aggregation. If any validation errors occur in regard to a file, the errors are saved in a log file and the aggregation is stopped for this file; if more files exist, the aggregation continues to attempt to read those. Inspect the log file and adjust your process to generate valid files.

To validate a JSON file against the schema:

  1. Go to https://www.jsonschemavalidator.net.

  2. Enter the contents of the schema file on the left-hand side of the screen.

  3. Enter the contents of a generated JSON file on the right-hand side of the screen.

Eventual errors will automatically be highlighted on the aforementioned webpage.

The JSON file must contain a complete data set (including entries for all users and subscriptions) every time that the aggregation runs. The connector does not support incremental updates of users and subscriptions.

Additional guidelines and requirements

  • The Users and Subscriptions array must contain at least one item. Empty lists are considered invalid.

  • The subscription properties UserCap and AvailableSeats must be numerical values. String values are considered invalid even though they might contain a valid number.

    Example 19.
    • Valid: 3

    • Invalid: "3"



  • The date format must be in the ISO 8601 format, as follows:

    yyyy-MM-ddTHH:mm:ss

  • The order of the properties inside the JSON object does not matter.

  • The JSON property names are case sensitive.

  • The subscription object property for MeteringTypes and the user object property for Status are case sensitive.

    Example 20.
    • Valid: "Active"

    • Invalid: "active"



Example JSON file

This is an example of the contents of a valid JSON file that validates against the generic_saas_schema.json file and can be read by SaaS - Generic connector:

{
  "Subscriptions": [
    {
      "ID": "User subscription for 870f902f-ac4a-4789-963c-e01896f6106e",
      "UserCap": 100,
      "AvailableSeats": 98,
      "MeteringType": "PerAssignedUser",
      "Created": "2009-06-15T13:45:30",
      "Type": {
        "ID": "example_subscription_id",
        "Name": "Example user subscription"
      },
      "UserIds": [
        "john.doe@snowsoftware.com",
        "jane.doe@snowsoftware.com"
      ]
    }
  ],
  "Users": [
    {
      "Id": "john.doe@snowsoftware.com",
      "Email": "john.doe@snowsoftware.com",
      "UserName": "johndoe",
      "Name": "John Doe",
      "Status": "Active",
      "FirstActivity": "2017-08-22T17:22:17",
      "LastActivity": "2019-09-16T17:22:17",
      "Registration": "2017-08-22T17:22:17"
    },
    {
      "Id": "jane.doe@snowsoftware.com",
      "Email": "jane.doe@snowsoftware.com",
      "UserName": "janedoe",
      "Name": "Jane Doe",
      "Status": "Active",
      "FirstActivity": "2017-08-22T17:22:17",
      "LastActivity": "2019-08-25T17:22:17",
      "Registration": "2017-08-22T17:22:17"
    }
  ]
}