These docs are for v1.0. Click to read the latest docs for v2.0.

Improved the accuracy of Report Builder queries that combine aggregations (sum, count, avg, min, max) on the primary resource with with joins.

Fixed

Reports API / Query API

  • Reports that aggregated on the primary resource while also joining another resource — for example, "total spend per requestor per application" (grouping payments by email with with: { applications }) — could previously return too many rows with understated per-row totals. The fix restores the intended grouping. If you have saved reports in this shape, you may now see fewer rows with higher per-row aggregates. These are the accurate values.

Changed

Reports API / Query API

  • Queries that use an op field on the primary resource alongside with now require at least one non-op field on the primary to group by. Previously these queries failed with an unclear database error; they now return a 400 Bad Request with guidance:

    When using "op" fields on the primary resource alongside "with", at least one non-"op" field must be provided to group by. Add a non-aggregate field to "fields", or remove "with".

Added a new Company resource for retrieving details about your organization.

Added

Company

Get Company

  • An endpoint to retrieve details about the authenticated user's organization, including company name, default currency, timezone, and more.

Company Fields

The following fields are available in the Company resource:

  • id - Unique identifier for the company
  • name - The name of the company
  • currency - The default currency used by the company (e.g., USD, EUR)
  • timezone - The timezone preference for the company (e.g., America/New_York)
  • employee_roster - The employee roster source for the company
  • employee_roster_integration_id - The integration ID of the employee roster
  • fiscal_year_settings - The fiscal year configuration settings for the company

Added a new Alerts resource for managing notification alerts about contract renewals and application transactions.

Added

Alerts

The Alerts API provides endpoints to create and manage notification alerts that notify users about important events:

Get Alerts

  • An endpoint to retrieve all alerts configured for your company.

Get Alert by ID

  • An endpoint to retrieve a specific alert by its unique identifier.

Create Alert

  • An endpoint to create new alerts for contract renewals or application transactions.
  • Supports three alert types:
    • Renewal alerts - Notify when an application's contract is approaching renewal (7-240 days in advance)
    • Transaction alerts - Notify when application transactions exceed a specified threshold
    • Contract renewal alerts - Notify when a contract is approaching renewal
  • Alerts require at least one email recipient and an owner.
  • Alert delivery method is automatically set to email.

Update Alert

  • An endpoint to modify alert properties like memo, owner, and notification settings.
  • Note: Alert type and associated application/contract cannot be changed after creation.

Delete Alert

  • An endpoint to delete an alert by its unique identifier.

Alert Fields

The following fields are available in the Alerts resource:

  • id - Unique identifier for the alert
  • type - Alert type (renewal, transaction, or contract-renewal)
  • application_id - The application this alert is associated with (for renewal and transaction alerts)
  • contract_id - The contract this alert is associated with (for contract-renewal alerts)
  • owner - Email address of the alert owner
  • method - Alert delivery method (currently email only)
  • settings - Configuration object containing recipients and alert-specific settings (notification periods, thresholds, etc.)
  • memo - Optional note about the alert
  • last_processed_date - Date and time the alert was last processed
  • zylo_created_at - Date and time the alert was created
  • zylo_modified_at - Date and time the alert was last modified

Updatable Fields

The following fields can be modified after alert creation:

  • owner - Change the alert owner
  • settings - Update recipients or alert-specific configuration
  • memo - Update the alert note

Adds a new field to the Applications resource to track when data was last processed.

Added

Applications

  • Added last_processed_date field to show when an application was last processed by its data source.

Fixed an issue in the Integrations resource where some records were not being returned.

Fixed

Integrations

  • Fixed an issue where integrations without a linked application were not being returned by the API. Suite integrations (such as Atlassian) may not have an application_id since they can be related to multiple applications.

Adds in the "Reports" resource and documentation, which allows for users to create CSV reports from the Report Builder Syntax.

Added

Reports API

The Reports API is a set of endpoint that allows for users to create reports from a builder syntax.

The builder syntax can create CSV reports that aggregate, filter and join on resources.

For example, if a user wants to see the total amount of spend per application category, they can run the below report:

{
  "builder": {
    "applications": {
      "fields": [
        {
          "name": "category",
          "as": "category"
        }
      ],
      "with": {
        "payments": {
          "fields": [
            {
              "name": "amount",
              "op": "sum",
              "as": "total_amount"
            }
          ]
        }
      }
    }
  },
  "sort": "+total_amount",
  "limit": 50
}

This will submit a job to Zylo to create a CSV, which can then be downloaded by the client via the Reports API.

Adds in the /query endpoint and documentation to the Enterprise API.

Added

Query API

The Query API is an endpoint that allows for users to aggregate and filter on resources without having to pull down all the data themselves to aggregate.

For example, if a user wants to know the total number of applications they have by category, they can run the below query:

{
  "builder": {
    "applications": {
      "fields": [
        {
          "name": "category",
          "as": "category"
        },
        {
          "name": "id",
          "op": "count",
          "as": "app_count"
        }
      ]
    }
  },
  "sort": "-app_count",
  "limit": 50
}

This results in a response like:

{
    [
        {
            "category": "Engineering",
            "app_count": 50
        },
        {
            "category": "Product Management",
            "app_count": 32
        },
        ...
    ]
}

To see more information, check out the Query API documentation in the sidebar to the left.

Adds status as a field on the "Contracts" resource.

Improved

Contracts

There is now a status field on the contracts to quickly identify the status of the contract.

Increased file upload size limit for Payment Uploads and Usage Connect Uploads.

Improved

Increased the limit for Payment and Usage Connect Uploads from 100MB to 3GB.

The ability to get activity history records for changes to applications has now been added

Added

Activity History

Get list of Activity History Records

  • An endpoint to get a list of Activity History Records from your Zylo instance. This includes the metadata for the Activity History Records.

Get an Activity History Record by Id

  • An endpoint to get a single Activity History Record from your Zylo instance by its id. This includes the metadata for the Activity History Records.