Import Contract
Purpose
To import contracts in various states - Draft, Signed, Active, or Expired. The import contract process involves two steps:
- Uploading the contract documents using the Upload File API.
- Providing the uploaded file references and contract details using the Import Contract API.
Note:
- If multiple documents are required for the import, such as the original document, signed copy, and digital sign certificate, each file must be uploaded individually. After each upload, retrieve the corresponding ID and include all relevant IDs when calling the Import Contract API.
- Importing signed and expired contracts along with their amendment or renewal history is not supported.
- For developers who are already using the previous Import Draft Contract API, you can continue to use the API.
Endpoints
Request Details
1. Request URL: First API Call
https://contracts.zoho.com/api/v1/contracts/uploadfile?module={File-Type}
Note:
- The request should use the multipart/form-data Content-Type to support file uploads.
The request URL should contain the query parameter ?module={File-Type} to specify the type of file being uploaded, as mentioned below
File Type Description uploadDraftDetail Represents the contract document. Applicable for importing draft contracts.
Supported file formats: .doc, .docx, and .rtf.
uploadOriginalDetail Represents the original contract's document. Applicable for importing contracts in these statuses: Signed and Active, Signed but Not Active, and Expired.
Supported file formats: .doc, .docx, and .rtf
uploadSignedDetail Represents the signed PDF document.
Supported file format: .pdf
uploadDigiSignedDetail Represents the digital sign certificate.
Supported file format: .pdf
Sample Request: First API Call
Copied
Response to the First API Call
Copied
2. Request URL: Second API Call
https://contracts.zoho.com/api/v1/importcontract
Authorization
Authorization: Zoho-oauthtoken 1000.67013ab3960787bcf3affae67e649fc0.83a789c859e040bf11e7d05f9c8b5ef6
Scope
contracts.contracts.CREATE, contracts.contracts.ALL
Possible Operation Types
ALL - Full access to contract details
CREATE - Create contract
Sample Request: Second API Call
Copied
Input JSON Keys
- sourcenumber
Represents the origin of the contract. The source key should be set to 2.
- inputfieldsJSON Array
Represents all the fields used to create the contract.
- uploadsJSON Object
Represents the ID returned by the Upload File API, mapped to the respective uploaded file type.
Key Description uploadDraftDetail ID of the uploaded document for the draft contract. uploadOriginalDetail ID of the uploaded contract document for the signed and not yet active, signed and active, or expired contract. uploadSignedDetail ID of the uploaded signed PDF document. uploadDigiSignedDetail ID of the uploaded digitally signed certificate. - importContractStatesstring
Represents the status of the contract to be imported.
Values Description draft Represents a contract that is in the draft state. signed Represents a contract that has been signed but is not yet active. active Represents a contract that has been signed and is currently active. expired Represents a contract that was active but has expired. - importCurrentContractTerminteger
Represents the current phase of the contract. Currently, only the original version of the contract can be imported. Importing contracts with amendment or renewal history is not supported.
Value Description 1 Represents the original version of the contract, before any renewals or amendments were made. - metaApiNamestring
Represents the API name of the field used to create a contract. The field can be a particular field or a field and its related fields.
- inputsJSON Array
The array represents the API names of the fields and its value used to create a contract.
- inputApiNamestring
Represents the API name of the field used to create a contract. Refer to the inputApiNames List below that lists all the values of the inputApiName key.
- inputValue
Represents the value of a field used to create a contract. Regarding the data type, refer to the data type of each of the inputApiNames' values in the inputApiNames List below.
This section lists all the values of the inputApiName key that indeed are the API names of each field used to create a contract.
- contract-typestring
Represents the API name of the contract type.
- titlestring
Represents the contract title.
- descriptionstring
Represents the description of the contract.
- requester-namestring
Represents the name of the person who requested the contract.
- requester-departmentstring
Represents the API name of the department to which the requested person belongs to.
- party-b-namestring
Represents the API name of the counterparty.
- counterparty-primary-contactstring
Represents the email ID of the counterparty's primary contact.
- contract-termboolean
Represents whether the contract's term is definite or indefinite.
Value Description True Definite False Indefinite - contract-effective-datenumber
Represents the effective date options of the contract.
Value Description 0 Specific Date 1 Execution - effective-specific-datestring
Represents the specific date on which the contract's term begins.
- contract-end-datenumber
Represents the end date options of the contract.
Value Description 0 Specific Date 1 On Condition 2 On Event 3 N Months/Years 4 On Fulfillment Of Order/Service - end-specific-datestring
Represents the specific date on which the contract's term ends.
- n-monthsyears-termnumber
Represents whether the contract period ends by Months or Years (i.e., N Months/Years).
Value Description 0 Months 1 Years - n-monthsyears-valuenumber
Represents the number of months or years after which the contract will end from the start date.
- end-on-conditionstring
Represents the description of the condition on which the contract's term ends.
- end-on-eventstring
Represents the description of the event on which the contract's term ends.
- end-on-fulfillment-of-orderservicestring
Represents the description of the order/service that when fulfilled will end the contract.
- termination-notice-periodnumber
Represents the minimum number of days required before the contract's end date to send/receive a termination notice. For example, 20 Days.
- is-renewableboolean
Represents whether the contract is renewable or not.
Value Description True Renewable False Non-Renewable - renewal-typenumber
Represents whether the contract is of manual or evergreen renewal type.
Value Description 0 Manual Renewal 1 Evergreen Renewal - notice-period-before-expirationnumber
Represents the minimum number of days required before the manually renewable contract's end date to initiate the renewal. For example, 5 Days.
- send-expiration-remindernumber
Represents the number of days before the contract's end date on which the renewal reminder notification has to be sent for manually renewable contracts. For example, 15 Days.
- renewal-termnumber
Represents the consecutive renewal term period of an evergreen contract after the end of each term in months or years.
Value Description 0 Months 1 Years - renewal-term-periodnumber
Represents the number of months or years of the renewal term period of an evergreen contract. For example, 10 Months.
- non-renewal-notice-periodnumber
Represents the minimum number of days required before the evergreen contract's end date to send/receive a non-renewal notice. For example, 10 Days.
- amountBigDecimal
Represents the contract amount to be paid or received, which is based on the contract type's intent (i.e., Buy or Sell).
- taxnumber
Represents whether the contract amount is inclusive of tax or the tax is as per the payment terms.
Value Description 0 All Taxes Included 1 As Per Payment Terms
Sample Input: Second API Call
Copied
Response JSON Keys
Refer to Get Contract API to view the Sample Response and its corresponding Response JSON Keys section to know the details.
Response to the Second API Call
Copied
Show full
Show less
Possible Errors
INVALID_URL_PATTERNHTTP 404
Request URL is incorrect
Resolution: Specify a valid request URL. Refer to the Request URL section above.
OAUTH_SCOPE_MISMATCHHTTP 401
Unauthorized
Resolution: Client does not have contracts.contracts.CREATE scope. Create a new client with valid scope. Refer to the Scope section above.
NO_PERMISSIONHTTP 403
Permission denied to create
Resolution: The user does not have permission to create records. Contact your organization administrator.
INTERNAL_ERRORHTTP 500
Internal Server Error
Resolution: Unexpected and unhandled exception in the server.
INVALID_REQUEST_METHODHTTP 400
The HTTP request method is not a valid one.
Resolution: You have specified an invalid HTTP method to access the API URL. Specify a valid request method. Refer to the Endpoints section above.
AUTHORIZATION_FAILEDHTTP 400
The user does not have sufficient privilege to create module details.
Resolution: The user does not have permission to create module details. Contact your organization administrator.