---
title: "Update a Contract"
method: PATCH
path: "/license-manager/contracts/{id}"
tags: ["License Manager Public"]
---

# Update a Contract

`PATCH /license-manager/contracts/{id}`

Update the details of an existing contract. Only the fields included in the request body will be updated.

## Request body

- LicenseManagerContractUpdateRequest
  - `name` string — The display name of the contract.
  - `applicationId` string, nullable — The unique identifier of the linked application. Use the [Applications API](https://developers.sysaid.com/reference/searchlicensemanagerapplications) to retrieve application details.
  - `status` string — The current status of the contract. Allowed values are "active" (currently in effect), "closed" (expired or terminated), and "pipeline" (planned but not yet active).
  - `type` string, nullable — The type of software deployment for this contract. Allowed values are "saas" (cloud-based software), "on-prem" (on-premises software), "hybrid" (combination of cloud and on-premises), and "other".
  - `category` string, nullable — The application's business category. Allowed values: operations, sales-and-marketing, developer-tools, design, project-management, customer-success, human-resources, it-and-security, finance, productivity, analytics-and-bi, other.
  - `startDate` string, date, nullable — The start date of the contract.
  - `endDate` string, date, nullable — The end date of the contract.
  - `paymentTerm` string, nullable — The billing frequency for this contract. Allowed values are "annual", "monthly", "multiyear", "quarterly", "one-time", and "free".
  - `contractValue` number, nullable — The total monetary value of the contract in the specified currency.
  - `currency` string — ISO 4217 currency code for cost fields. Allowed values: USD, EUR, GBP, CAD, CHF, SEK, NOK, DKK, MXN, PLN, BRL, ILS, AUD, NZD, ZAR, GHS, TTD.
  - `licensesCount` integer, nullable — The number of licenses included in this contract.
  - `autoRenewal` boolean — Indicates whether the contract renews automatically when it reaches its end date. The default is "false".
  - `cancellationNotice` integer, nullable — The number of days before the end date by which cancellation must be submitted to avoid auto-renewal.
  - `notes` string, nullable — Free-text notes or comments about the contract.

## Response `200`

Contract is successfully updated.

- LicenseManagerContract — A contract represents a software license agreement tracked in the License Manager.
  - `name` string, required — The display name of the contract.
  - `applicationId` string, nullable — The unique identifier of the linked application. Use the [Applications API](https://developers.sysaid.com/reference/searchlicensemanagerapplications) to retrieve application details.
  - `status` string, required — The current status of the contract. Allowed values are "active" (currently in effect), "closed" (expired or terminated), and "pipeline" (planned but not yet active).
  - `type` string, nullable — The type of software deployment for this contract. Allowed values are "saas" (cloud-based software), "on-prem" (on-premises software), "hybrid" (combination of cloud and on-premises), and "other".
  - `category` string, nullable — The application's business category. Allowed values: operations, sales-and-marketing, developer-tools, design, project-management, customer-success, human-resources, it-and-security, finance, productivity, analytics-and-bi, other.
  - `startDate` string, date, nullable — The start date of the contract.
  - `endDate` string, date, nullable — The end date of the contract.
  - `paymentTerm` string, nullable — The billing frequency for this contract. Allowed values are "annual", "monthly", "multiyear", "quarterly", "one-time", and "free".
  - `contractValue` number, nullable — The total monetary value of the contract in the specified currency.
  - `currency` string — ISO 4217 currency code for cost fields. Allowed values: USD, EUR, GBP, CAD, CHF, SEK, NOK, DKK, MXN, PLN, BRL, ILS, AUD, NZD, ZAR, GHS, TTD.
  - `licensesCount` integer, nullable — The number of licenses included in this contract.
  - `autoRenewal` boolean — Indicates whether the contract renews automatically when it reaches its end date. The default is "false".
  - `cancellationNotice` integer, nullable — The number of days before the end date by which cancellation must be submitted to avoid auto-renewal.
  - `notes` string, nullable — Free-text notes or comments about the contract.
  - `id` string, required — The unique identifier of the contract (CUID format, 24 characters).
  - `application` LicenseManagerApplication — The Application object represents a SaaS application.
    - `id` string, required — The unique identifier of the application in SysAid (CUID format, 24 characters).
    - `name` string, required — The application name (1-255 characters).
    - `description` string, nullable — A detailed description of the application.
    - `discoveryMethods` DiscoveryMethod[] — The way in which the application was discovered. See DiscoveryMethod.
    - `category` string, nullable — The application's business category. Allowed values: operations, sales-and-marketing, developer-tools, design, project-management, customer-success, human-resources, it-and-security, finance, productivity, analytics-and-bi, other.
    - `state` string, required — The current state of the application in the review workflow. Allowed values: pending-review, under-review, optimization-opportunity, requested, approved, denied, ignored. Default is pending-review.
    - `vendor` string, nullable — SaaS vendor or publisher name.
    - `website` string, uri, nullable — Official website URL for the application.
    - `icon` string, uri, nullable — Full CDN URL to application/vendor logo.
    - `totalLicenses` integer, nullable — Number of purchased licenses.
    - `activeUsers` integer, nullable — Unique users who logged in over the last 30 days.
    - `inactiveUsers` integer, nullable — The number of inactive users - users that haven't signed in to the application in the last 30 days. Calculated as totalLicenses - activeUsers.
    - `utilizationRate` integer, nullable — The application's utilization rate. Calculated as (activeUsers / totalLicenses) * 100.
    - `totalCost` number, double, nullable — Total annual cost (precision 12,2).
    - `costPerLicense` number, double, nullable — The annual cost per license. Calculated as totalCost / totalLicenses (precision 12,2).
    - `estimatedSavings` number, double, nullable — The potential sum you can save for this application. Calculated as inactiveUsers * costPerLicense (precision 12,2).
    - `compliance` LicenseManagerCompliance — The application's compliance certification status. Each certification can be true (certified), false (not certified), or null (unknown/not assessed).
      - `SOC2` boolean, nullable
      - `ISO_27001` boolean, nullable
      - `GDPR` boolean, nullable
    - `currency` string — ISO 4217 currency code for cost fields. Allowed values: USD, EUR, GBP, CAD, CHF, SEK, NOK, DKK, MXN, PLN, BRL, ILS, AUD, NZD, ZAR, GHS, TTD.
    - `dateCreated` string, date-time, required — The timestamp of when the application was created in the License Manager system.
    - `dateUpdated` string, date-time, nullable — The timestamp of when the application was last updated in License Manager. This includes changes to any application details or data.
  - `cancellationDeadline` string, date-time, nullable — The deadline for cancellation, calculated as endDate minus cancellationNotice days. This field cannot be edited.
  - `dateCreated` string, date-time, required — The timestamp of when the contract was created.
  - `dateUpdated` string, date-time, required — The timestamp of when the contract was last updated.

## Other responses

- `400` — The request was invalid or cannot be served
- `401` — Authentication information is missing or invalid
- `404` — The specified resource was not found
- `409` — The request could not be completed due to a conflict with the current state of the resource. This typically occurs when attempting to create a duplicate resource, update a resource that has been modified by another process, or when business rules prevent the operation.
- `500` — An unexpected error occurred on the server

---

[API](https://skmtc.net/sysaid/apis/sysaid-public-api.md) · [All operations](https://skmtc.net/sysaid/apis/sysaid-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sysaid/sysaid-public-api/revisions/38a43a1b2981/schema)
