# REST API and APIClient
The OpenLaw REST API is an interface in the OpenLaw protocol for querying, saving, and changing data in an OpenLaw instance. The class APIClient library in APIClient.js (opens new window) serves as a convenient wrapper to the REST API and can be used for many of the method calls. The API methods are categorized below.
Parameters for REST calls
For GET requests, any parameters not included as a segment in the path can be passed as an HTTP query string parameter.
For POST requests, any parameters not included as a segment in the path should be data of the specified Content-Type.
APIClient
In order to use the APIClient method calls, a class instance will first need to be instantiated with the root URL of an OpenLaw instance. For example:
apiClient = new APIClient("https://lib.openlaw.io/api/v1/default");
Including just the root URL as shown above will be sufficient in most cases. But in cases where basic authentication has been enabled as further protection in addition to logging into an OpenLaw instance, you can include the appropriate user credentials:
apiClient = new APIClient({
root: "https://openlaw-instance-with-basic-auth.openlaw.io/api/v1/default",
auth: {
username: "<username>",
password: "<password>",
},
});
Each method below will include example usage of the APIClient library (with the apiClient
instance) if available.
# Authentication
Unless otherwise specified, each of the resources can be accessed by a logged in user with a StandardUser
role, which is the default permission for a newly-registered user, or an Admin
role, which has greater permissions as explained in the toAdminUser method below.
We use JSON Web Tokens (JWT) (opens new window) to handle authentication. For every call that needs authentication (user with a StandardUser
role or an Admin
role), you will need to pass the JWT in the headers under the value OPENLAW_JWT
.
The class APIClient handles setting the token in the headers automatically for convenience. Subsequent method calls on the APIClient class instance after login will already have the JWT set. However, you will need to handle passing the JWT in the headers if you implement the REST calls without the APIClient wrapper.
# login
POST /app/login
Content-Type: application/x-www-form-urlencoded
Parameters
Name | Type | Description |
---|---|---|
userId | string | Required. The ID (email) of the user. |
password | string | Required. The user password. |
Example form data
userId=openlawuser%2B1%40gmail.com&password=password1234
APIClient
apiClient.login("openlawuser+1@gmail.com", "password1234");
Response
Returns a promise which resolves with an object containing headers with the OPENLAW_JWT
(e.g., eyAiaXNzIjogImVraW5vLmNvbSIsICJuYW1lIjogIkpvaG4gRG9lIiwgImFkbWluIjogdHJ1ZSB9
).
# Template
# getTemplateById
Get template by its ID.
GET /template/id/raw/:id
Parameters
Name | Type | Description |
---|---|---|
id | string | Required. The template ID. |
Example
GET /template/id/raw/39437de827f8374899d7f7e817193894749872394
APIClient
apiClient.getTemplateById("39437de827f8374899d7f7e817193894749872394");
Response
Returns a promise which resolves with a JSON object containing information about the retrieved template, including its content.
Example
{
"id": "d76ede8ca437f6da06b1e09f115393318faf29fdc5bdaaf0b2e889886136edf4",
"title": "Advisor Agreement",
"content": "This Advisor Agreement is entered into between [[Company Name: Text]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n",
"templateType": "agreement"
}
# getTemplate
Get template by its title.
GET /template/raw/:title
Parameters
Name | Type | Description |
---|---|---|
title | string | Required. The title of the template. |
Example
GET /template/raw/Advisor%20Agreement
APIClient
apiClient.getTemplate("Advisor Agreement");
Response
Returns a promise which resolves with a JSON object containing information about the retrieved template, including its content.
Example
{
"id": "d76ede8ca437f6da06b1e09f115393318faf29fdc5bdaaf0b2e889886136edf4",
"title": "Advisor Agreement",
"content": "This Advisor Agreement is entered into between [[Company Name: Text]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n",
"templateType": "agreement"
}
# getTemplateVersion
Get template by its title and a specific version.
GET /template/raw/:title/:version
Parameters
Name | Type | Description |
---|---|---|
title | string | Required. The title of the template. |
version | string | Required. The version number of the template. |
Example
GET /template/raw/Advisor%20Agreement/15
APIClient
apiClient.getTemplateVersion("Advisor Agreement", "15");
Response
Returns a promise which resolves with a string representation of the template's raw content.
Example
"This Advisor Agreement is entered into between [[Company Name: Text]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n"
# getTemplateVersions
List saved versions of a template.
GET /templates/version
Parameters
Name | Type | Description |
---|---|---|
title | string | Required. The title of the template. |
pageSize | number | Required. The number of versions to display on page. |
page | number | Required. Which group of versions to display. Each group consists of pageSize versions. |
Example
GET /templates/version?title=Advisor%20Agreement&pageSize=10&page=1
APIClient
apiClient.getTemplateVersions("Advisor Agreement", 10, 1);
Response
Returns a promise which resolves with an array of JSON objects containing information about the retrieved template versions.
Example
[
{
"id": "d76ede8ca437f6da06b1e09f115393318faf29fdc5bdaaf0b2e889886136edf4",
"title": "Advisor Agreement",
"timestamp": 1537509029000,
"version": 15,
"templateType": "agreement",
"creatorId": "openlawuser+1"
},
{
"id": "8a1e1471d3d38b8c1ab44092388089814b7d986375648fb441719680917e6730",
"title": "Advisor Agreement",
"timestamp": 1537509001000,
"version": 14,
"templateType": "agreement",
"creatorId": "openlawuser+2"
},
{
"id": "7f86a0db26f2014e1ebceec214f4a7bfa004741b1bfc1448c4914e3bc17c0804",
"title": "Advisor Agreement",
"timestamp": 1537444950000,
"version": 13,
"templateType": "agreement",
"creatorId": "openlawuser+1"
}
]
# templateSearch
List templates based on search by title.
GET /templates/search
Parameters
Name | Type | Description |
---|---|---|
keyword | string | Required. The search term to filter retrieved templates. Leaving keyword empty (an empty string for apiClient ) will return all templates. |
page | number | Required. Which group of templates to display. Each group consists of pageSize templates. |
pageSize | number | Required. The number of templates to display on page. |
Example
GET /templates/search?keyword=employee&page=1&pageSize=10
APIClient
apiClient.templateSearch("employee", 1, 10);
Response
Returns a JSON object containing the number of search hits and data for the retrieved templates.
Example
{
"nbHits": 3,
"data": [
{
"id": "9958a927caafaf6d406bfa3ee3c0c43980aab21050f9573be2c75787bd3f5dd9",
"title": "Employee Offer Letter",
"templateType": "agreement"
},
{
"id": "c718cd447e674042d3f2ac843439c18cd04e921869e389959943fc9991123632",
"title": "Employee Onboarding",
"templateType": "deal"
},
{
"id": "22cc8da7f456abca9286be5957a40a0a32cce3f28c13fa848a0936a8518b6c02",
"title": "Employee Stock Award",
"templateType": "agreement"
}
]
}
# saveTemplate
Save a template after changes are made.
POST /upload/template/:title
Content-Type: text/plain;charset=UTF-8
Parameters
Name | Type | Description |
---|---|---|
title | string | Required. The title of the template. |
value | string | Required. The template content to be saved. |
Example (with value
payload)
POST /upload/template/Advisor%20Agreement
This Advisor Agreement is entered into by and between [[Company Name: Text]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n
APIClient
const value =
'This Advisor Agreement is entered into by and between [[Company Name: Text]] ("Corporation") and [[Advisor Name]] ("Advisor") as of [[Effective Date: Date]] ("Effective Date"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company\'s request (the "Services"). {{No Services "Do you want to limit the advisor\'s services?" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field "What field should the advisor not participate in?"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n';
apiClient.saveTemplate("Advisor Agreement", value);
Response
Returns a JSON object containing information about the saved template.
Example
{
"id": "29f529e7f819fa2beb1c4a8bf258a15cfe46dad4f91538ebedbd1fb7299bbc55",
"title": "Advisor Agreement",
"content": "This Advisor Agreement is entered into by and between [[Company Name: Text]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n",
"templateType": "agreement"
}
# renameTemplate
Change title of template.
GET /templates/rename
Parameters
Name | Type | Description |
---|---|---|
name | string | Required. The current title of the template to be renamed. |
newName | string | Required. The new title of the template. |
Example
GET /templates/rename?name=Advisor%20Agreement&newName=New%20Advisor%20Agreement
APIClient
apiClient.renameTemplate("Advisor Agreement", "New Advisor Agreement");
Response
Returns "renamed"
if template was successfully renamed.
# deleteTemplate
Delete a template.
Authentication
This resource can only be accessed by a logged in user with an Admin
role as further explained in the toAdminUser method.
GET /templates/delete
Parameters
Name | Type | Description |
---|---|---|
name | string | Required. The name of the template to be deleted. |
Example
GET /templates/delete?name=Loan%20Agreement
APIClient
apiClient.deleteTemplate("Loan Agreement");
Response
Returns "Template deleted!"
if template was successfully deleted.
# restoreTemplate
Restore a previously deleted template.
Authentication
This resource can only be accessed by a logged in user with an Admin
role as further explained in the toAdminUser method.
GET /templates/restore
Parameters
Name | Type | Description |
---|---|---|
name | string | Required. The name of the template to be restored. |
Example
GET /templates/restore?name=Loan%20Agreement
APIClient
apiClient.restoreTemplate("Loan Agreement");
Response
Returns "Template restored!"
if template was successfully restored.
# searchDeletedTemplates
List deleted templates based on search by title.
Authentication
This resource can only be accessed by a logged in user with an Admin
role as further explained in the toAdminUser method.
GET /templates/searchDeleted
Parameters
Name | Type | Description |
---|---|---|
keyword | string | Required. The search term to filter retrieved deleted templates. Leaving keyword empty (an empty string for apiClient ) will return all deleted templates. |
page | number | Required. Which group of deleted templates to display. Each group consists of pageSize deleted templates. |
pageSize | number | Required. The number of deleted templates to display on page. |
Example
GET /templates/searchDeleted?keyword=employee&page=1&pageSize=10
APIClient
apiClient.searchDeletedTemplates("employee", 1, 10);
Response
Returns a JSON object containing the number of search hits and the names of the retrieved deleted templates.
Example
{
"nbHits": 2,
"data": ["Insider Trading Policy for Employees", "Employee Stock Award"]
}
# downloadAsDocx
Download template as Word file.
Browser only
This request can be made only in a browser and not in a Node.js environment.
POST /download/contract/docx
Content-Type: application/x-www-form-urlencoded
Parameters
Name | Type | Description |
---|---|---|
params | Object | Required. The object containing information about the template to be downloaded. |
Example form data
data: {"content":"This Advisor Agreement is entered into between [[Company Name]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n\n[[Company Signatory Email: Identity | Signature]]\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n\n[[Advisor Email: Identity | Signature]]\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n","title":"Advisor Agreement","parameters":{},"paragraphs":{},"templates":{}}
APIClient
const params = {
content:
'This Advisor Agreement is entered into between [[Company Name]] ("Corporation") and [[Advisor Name]] ("Advisor") as of [[Effective Date: Date]] ("Effective Date"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company\'s request (the "Services"). {{No Services "Do you want to limit the advisor\'s services?" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field "What field should the advisor not participate in?"]].}}\n\n**COMPANY:**\n\n[[Company Signatory Email: Identity | Signature]]\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n\n[[Advisor Email: Identity | Signature]]\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n',
title: "Advisor Agreement",
parameters: {},
paragraphs: {},
templates: {},
};
apiClient.downloadAsDocx(params);
# downloadAsPdf
Download template as PDF file.
Browser only
This request can be made only in a browser and not in a Node.js environment.
POST /download/contract/pdf
Content-Type: application/x-www-form-urlencoded
Parameters
Name | Type | Description |
---|---|---|
params | Object | Required. The object containing information about the template to be downloaded. |
Example form data
data: {"content":"This Advisor Agreement is entered into between [[Company Name]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n\n[[Company Signatory Email: Identity | Signature]]\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n\n[[Advisor Email: Identity | Signature]]\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n","title":"Advisor Agreement","parameters":{},"paragraphs":{},"templates":{}}
APIClient
const params = {
content:
'This Advisor Agreement is entered into between [[Company Name]] ("Corporation") and [[Advisor Name]] ("Advisor") as of [[Effective Date: Date]] ("Effective Date"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company\'s request (the "Services"). {{No Services "Do you want to limit the advisor\'s services?" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field "What field should the advisor not participate in?"]].}}\n\n**COMPANY:**\n\n[[Company Signatory Email: Identity | Signature]]\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n\n[[Advisor Email: Identity | Signature]]\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n',
title: "Advisor Agreement",
parameters: {},
paragraphs: {},
templates: {},
};
apiClient.downloadAsPdf(params);
# downloadTemplateAsJson
Download template as JSON file.
Browser only
This request can be made only in a browser and not in a Node.js environment.
GET /templates/json/:title
Parameters
Name | Type | Description |
---|---|---|
title | string | Required. The title of the template to be downloaded. |
Example
GET /templates/json/Advisor%20Agreement
APIClient
apiClient.downloadTemplateAsJson("Advisor Agreement");
# Draft
# uploadDraft
Upload a draft which generates a draft ID.
POST /upload/draft
Content-Type: text/plain;charset=UTF-8
Parameters
Name | Type | Description |
---|---|---|
params | Object | Required. The object containing information about the draft to be uploaded. |
Example params
payload
{
"templateId": "29f529e7f819fa2beb1c4a8bf258a15cfe46dad4f91538ebedbd1fb7299bbc55",
"title": "Advisor Agreement",
"text": "This Advisor Agreement is entered into between [[Company Name: Text]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n",
"creator": "8f26427b-0853-469b-a4f1-132190b7373e",
"parameters": {
"Company Name": "ABC, Inc.",
"Company Signatory Email": "{\"id\":{\"id\":\"8f26427b-0853-469b-a4f1-132190b7373e\"},\"email\":\"openlawuser+1@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+1@gmail.com\"}]}",
"Advisor Email": "{\"id\":{\"id\":\"38e0eb6b-0d52-4fd8-a77d-19686fd3843a\"},\"email\":\"openlawuser+2@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+2@gmail.com\"}]}"
},
"overriddenParagraphs": {},
"agreements": {},
"readonlyEmails": [],
"editEmails": [],
"draftId": ""
}
APIClient
const params = {
templateId:
"29f529e7f819fa2beb1c4a8bf258a15cfe46dad4f91538ebedbd1fb7299bbc55",
title: "Advisor Agreement",
text:
'This Advisor Agreement is entered into between [[Company Name: Text]] ("Corporation") and [[Advisor Name]] ("Advisor") as of [[Effective Date: Date]] ("Effective Date"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company\'s request (the "Services"). {{No Services "Do you want to limit the advisor\'s services?" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field "What field should the advisor not participate in?"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n',
creator: "8f26427b-0853-469b-a4f1-132190b7373e",
parameters: {
"Company Name": "ABC, Inc.",
"Company Signatory Email":
'{"id":{"id":"8f26427b-0853-469b-a4f1-132190b7373e"},"email":"openlawuser+1@gmail.com","identifiers":[{"identityProviderId":"openlaw","identifier":"openlawuser+1@gmail.com"}]}',
"Advisor Email":
'{"id":{"id":"38e0eb6b-0d52-4fd8-a77d-19686fd3843a"},"email":"openlawuser+2@gmail.com","identifiers":[{"identityProviderId":"openlaw","identifier":"openlawuser+2@gmail.com"}]}',
},
overriddenParagraphs: {},
agreements: {},
readonlyEmails: [],
editEmails: [],
draftId: "",
};
apiClient.uploadDraft(params);
Response
Returns a promise which resolves with the string ID of the uploaded draft.
Example
"cb3ba52ccd277f650859f60b9a4cf8284393827121e86861a6a79a61868f37ca"
# getDraftVersion
Get user's draft by its ID and version.
GET /draft/raw/:draftId/:version
Parameters
Name | Type | Description |
---|---|---|
draftId | string | Required. The ID of the draft. |
version | number | Required. The version number of the draft. |
accessToken | string | The access token representing the requestor. If not specified, the current user will be used to determine who is the requestor. |
Example
GET /draft/raw/2dbbe1c23657f96d58de18ece4c0b311cc26fbca2551e8dc40d174af1046a00e/1?accessToken=28394728947829374823723428742389462378423874
APIClient
apiClient.getDraftVersion(
"2dbbe1c23657f96d58de18ece4c0b311cc26fbca2551e8dc40d174af1046a00e",
1,
"28394728947829374823723428742389462378423874"
);
Response
Returns a promise which resolves with a JSON object containing information about the retrieved draft, including its content.
Example
{
"parameters": [
[
"Advisor Address",
"{\"placeId\":\"ChIJWbGLkg9gwokR76ZxzYbdnpM\",\"streetName\":\"Main Street\",\"streetNumber\":\"123\",\"city\":\"Queens\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11354\",\"formattedAddress\":\"123 Main St, Flushing, NY 11354, USA\"}"
],
["Effective Date", "1537340400000"],
["Unit of Vesting", "250"],
["Company Name", "ABC, Inc."],
["Number of Shares", "1000"],
["Company Signatory", "Jane Davis"],
["Advisor Name", "John Smith"],
[
"Advisor Email",
"{\"id\":{\"id\":\"38e0eb6b-0d52-4fd8-a77d-19686fd3843a\"},\"email\":\"openlawuser+2@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+2@gmail.com\"}]}"
],
["Time of Vesting", "Yearly"],
[
"Company Address",
"{\"placeId\":\"EiI5ODcgTWFpbiBTdHJlZXQsIE5ldyBZb3JrLCBOWSwgVVNB\",\"streetName\":\"Main Street\",\"streetNumber\":\"987\",\"city\":\"Brooklyn\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11201\",\"formattedAddress\":\"987 Main St, Brooklyn, NY 11201, USA\"}"
],
["Years Vesting", "4"],
["No Services", "false"],
[
"Company Signatory Email",
"{\"id\":{\"id\":\"8f26427b-0853-469b-a4f1-132190b7373e\"},\"email\":\"openlawuser+1@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+1@gmail.com\"}]}"
]
],
"paragraphs": [
[
0,
{
"0": "This Advisor Agreement is entered into between [[Company Name]] (\"Corporation\") and John Smith (\"Advisor\") as of September 19, 2018 (\"Effective Date\"). The parties agree as follows:"
}
]
],
"content": "This Advisor Agreement is entered into between [[Company Name]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n",
"templates": {}
}
# getDraftVersions
List saved versions of a user's draft.
GET /drafts/version
Parameters
Name | Type | Description |
---|---|---|
draftId | string | Required. The ID of the draft. |
pageSize | number | Required. The number of versions to display on page. |
page | number | Required. Which group of versions to display. Each group consists of pageSize versions. |
accessToken | string | The access token representing the requestor. If not specified, the current user will be used to determine who is the requestor. |
Example
GET /drafts/version?draftId=84a6b2cf1f197ffced3ec875e6e9b93246a4b0aa3be7e24ff6e718ef9fac50a7&pageSize=10&page=1&accessToken=28394728947829374823723428742389462378423874
APIClient
apiClient.getDraftVersions(
"84a6b2cf1f197ffced3ec875e6e9b93246a4b0aa3be7e24ff6e718ef9fac50a7",
10,
1,
"28394728947829374823723428742389462378423874"
);
Response
Returns a promise which resolves with an array of JSON objects containing information about the retrieved draft versions.
Example
[
{
"timestamp": 1537368290,
"creatorId": "8f26427b-0853-469b-a4f1-132190b7373e",
"version": 2
},
{
"timestamp": 1537305436,
"creatorId": "38e0eb6b-0d52-4fd8-a77d-19686fd3843a",
"version": 1
}
]
# searchDrafts
List user's drafts based on search by title, alias (private name), and signatories.
GET /drafts/search
Parameters
Name | Type | Description |
---|---|---|
keyword | string | Required. The search term to filter retrieved drafts. Leaving keyword empty (an empty string for apiClient ) will return all drafts. |
page | number | Required. Which group of drafts to display. Each group consists of pageSize drafts. |
pageSize | number | Required. The number of drafts to display on page. |
sortBy | string | Required. The way in which returned drafts are to be sorted: creationdate , privatename , or title . |
Example
GET /drafts/search?keyword=advisor&page=1&pageSize=10&sortBy=creationdate
APIClient
apiClient.searchDrafts("advisor", 1, 10, "creationdate");
Response
Returns a JSON object containing the number of search hits and data for the retrieved drafts.
Example
{
"nbHits": 3,
"data": [
{
"id": "f855e235132e84e94b2de69ac9c5be41faf55d5d3842ea55cd599af79ad0ab57",
"title": "Advisor Agreement",
"creator": "openlawuser+1",
"creationDate": 1537529656000,
"privateName": "Advisor Agreement",
"signatories": [
"8f26427b-0853-469b-a4f1-132190b7373e",
"38e0eb6b-0d52-4fd8-a77d-19686fd3843a"
]
},
{
"id": "cb3ba52ccd277f650859f60b9a4cf8284393827121e86861a6a79a61868f37ca",
"title": "Advisor Agreement",
"creator": "openlawuser+1",
"creationDate": 1537527568000,
"privateName": "Advisor Agreement",
"signatories": [
"8f26427b-0853-469b-a4f1-132190b7373e",
"38e0eb6b-0d52-4fd8-a77d-19686fd3843a"
]
},
{
"id": "dad983eabe93c7fbf43f3969cc2b7509bccf2370b88b4d0710a857ace071ea3d",
"title": "Advisor Agreement",
"creator": "openlawuser+1",
"creationDate": 1537527030000,
"privateName": "Advisor Agreement",
"signatories": [
"8f26427b-0853-469b-a4f1-132190b7373e",
"38e0eb6b-0d52-4fd8-a77d-19686fd3843a"
]
}
]
}
# sendDraft
Send a draft to other users.
POST /send/draft
Content-Type: application/x-www-form-urlencoded
Parameters
Name | Type | Description |
---|---|---|
readonlyEmails | Array<string> | An array of users' emails who will have read-only access to the draft. |
editEmails | Array<string> | An array of users' emails who will have access to edit the draft. |
id | string | Required. The ID of the draft to be sent. |
Example form data
readonlyEmails=openlawuser%2B4%40gmail.com&readonlyEmails=openlawuser%2B5%40gmail.com&editEmails=openlawuser%2B3%40gmail.com&id=cb3ba52ccd277f650859f60b9a4cf8284393827121e86861a6a79a61868f37ca
APIClient
apiClient.sendDraft(
["openlawuser+4@gmail.com", "openlawuser+5@gmail.com"],
["openlawuser+3@gmail.com"],
"cb3ba52ccd277f650859f60b9a4cf8284393827121e86861a6a79a61868f37ca"
);
# changeDraftAlias
Change alias (private name) of user's draft.
GET /draft/alias/:draftId
Parameters
Name | Type | Description |
---|---|---|
draftId | string | Required. The ID of the draft to be given a new alias. |
newName | string | Required. The new alias of the draft. |
Example
GET /draft/alias/cb3ba52ccd277f650859f60b9a4cf8284393827121e86861a6a79a61868f37ca?draftId=cb3ba52ccd277f650859f60b9a4cf8284393827121e86861a6a79a61868f37ca&newName=Advisor%20Agreement%20Draft%20Copy
APIClient
apiClient.changeDraftAlias(
"cb3ba52ccd277f650859f60b9a4cf8284393827121e86861a6a79a61868f37ca",
"Advisor Agreement Draft Copy"
);
Response
Returns "name changed"
if alias was successfully changed.
# downloadDraftAsDocx
Download draft as Word file. (Note: The POST request here to download a Word file of a draft is the same as the request above to download a Word file of a template. You'll notice from the example form data that a draft includes more parameters that have been filled in by a user.)
Browser only
This request can be made only in a browser and not in a Node.js environment.
POST /download/contract/docx
Content-Type: application/x-www-form-urlencoded
Parameters
Name | Type | Description |
---|---|---|
params | Object | Required. The object containing information about the draft to be downloaded. |
Example form data
data: {"content":"This Advisor Agreement is entered into between [[Company Name]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n\n[[Company Signatory Email: Identity | Signature]]\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n\n[[Advisor Email: Identity | Signature]]\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n","title":"Advisor Agreement","parameters":{"Company Name":"ABC, Inc.","Effective Date":"1539662400000","Company Signatory Email":"{\"id\":{\"id\":\"6dd138a4-b0c2-4ba3-8305-58e1de0d7465\"},\"email\":\"openlawuser+1@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+1@gmail.com\"}]}","Advisor Name":"John Smith","Company Signatory":"Jane Davis","Advisor Email":"{\"id\":{\"id\":\"28e46837-c653-4e25-a6ce-7c39f05fa624\"},\"email\":\"openlawuser+2@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+2@gmail.com\"}]}","No Services":"false","Advisor Address":"{\"placeId\":\"ChIJWbGLkg9gwokR76ZxzYbdnpM\",\"streetName\":\"Main Street\",\"streetNumber\":\"123\",\"city\":\"Queens\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11354\",\"formattedAddress\":\"123 Main St, Flushing, NY 11354, USA\"}","Company Address":"{\"placeId\":\"ChIJWbGLkg9gwokR76ZxzYbdnpM\",\"streetName\":\"Main Street\",\"streetNumber\":\"123\",\"city\":\"Queens\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11354\",\"formattedAddress\":\"123 Main St, Flushing, NY 11354, USA\"}"},"paragraphs":{},"templates":{}}
APIClient
const params = {
content:
'This **Advisor Agreement** is entered into between [[Company Name]] ("Corporation") and [[Advisor Name]] ("Advisor") as of [[Effective Date: Date]] ("Effective Date"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company\'s request (the "Services"). {{No Services "Do you want to limit the advisor\'s services?" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field "What field should the advisor not participate in?"]].}}\n\n**COMPANY:**\n\n[[Company Signatory Email: Identity | Signature]]\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n\n[[Advisor Email: Identity | Signature]]\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n',
title: "Advisor Agreement",
parameters: {
"Company Name": "ABC, Inc.",
"Effective Date": "1539662400000",
"Company Signatory Email":
'{"id":{"id":"6dd138a4-b0c2-4ba3-8305-58e1de0d7465"},"email":"openlawuser+1@gmail.com","identifiers":[{"identityProviderId":"openlaw","identifier":"openlawuser+1@gmail.com"}]}',
"Advisor Name": "John Smith",
"Company Signatory": "Jane Davis",
"Advisor Email":
'{"id":{"id":"28e46837-c653-4e25-a6ce-7c39f05fa624"},"email":"openlawuser+2@gmail.com","identifiers":[{"identityProviderId":"openlaw","identifier":"openlawuser+2@gmail.com"}]}',
"No Services": "false",
"Advisor Address":
'{"placeId":"ChIJWbGLkg9gwokR76ZxzYbdnpM","streetName":"Main Street","streetNumber":"123","city":"Queens","state":"New York","country":"United States","zipCode":"11354","formattedAddress":"123 Main St, Flushing, NY 11354, USA"}',
"Company Address":
'{"placeId":"ChIJWbGLkg9gwokR76ZxzYbdnpM","streetName":"Main Street","streetNumber":"123","city":"Queens","state":"New York","country":"United States","zipCode":"11354","formattedAddress":"123 Main St, Flushing, NY 11354, USA"}',
},
paragraphs: {},
templates: {},
};
apiClient.downloadAsDocx(params);
# downloadDraftAsPdf
Download draft as PDF file. (Note: The POST request here to download a PDF file of a draft is the same as the request above to download a PDF file of a template. You'll notice from the example form data that a draft includes more parameters that have been filled in by a user.)
Browser only
This request can be made only in a browser and not in a Node.js environment.
POST /download/contract/pdf
Content-Type: application/x-www-form-urlencoded
Parameters
Name | Type | Description |
---|---|---|
params | Object | Required. The object containing information about the draft to be downloaded. |
Example form data
data: {"content":"This Advisor Agreement is entered into between [[Company Name]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n\n[[Company Signatory Email: Identity | Signature]]\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n\n[[Advisor Email: Identity | Signature]]\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n","title":"Advisor Agreement","parameters":{"Company Name":"ABC, Inc.","Effective Date":"1539662400000","Company Signatory Email":"{\"id\":{\"id\":\"6dd138a4-b0c2-4ba3-8305-58e1de0d7465\"},\"email\":\"openlawuser+1@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+1@gmail.com\"}]}","Advisor Name":"John Smith","Company Signatory":"Jane Davis","Advisor Email":"{\"id\":{\"id\":\"28e46837-c653-4e25-a6ce-7c39f05fa624\"},\"email\":\"openlawuser+2@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+2@gmail.com\"}]}","No Services":"false","Advisor Address":"{\"placeId\":\"ChIJWbGLkg9gwokR76ZxzYbdnpM\",\"streetName\":\"Main Street\",\"streetNumber\":\"123\",\"city\":\"Queens\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11354\",\"formattedAddress\":\"123 Main St, Flushing, NY 11354, USA\"}","Company Address":"{\"placeId\":\"ChIJWbGLkg9gwokR76ZxzYbdnpM\",\"streetName\":\"Main Street\",\"streetNumber\":\"123\",\"city\":\"Queens\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11354\",\"formattedAddress\":\"123 Main St, Flushing, NY 11354, USA\"}"},"paragraphs":{},"templates":{}}
APIClient
const params = {
content:
'This **Advisor Agreement** is entered into between [[Company Name]] ("Corporation") and [[Advisor Name]] ("Advisor") as of [[Effective Date: Date]] ("Effective Date"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company\'s request (the "Services"). {{No Services "Do you want to limit the advisor\'s services?" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field "What field should the advisor not participate in?"]].}}\n\n**COMPANY:**\n\n[[Company Signatory Email: Identity | Signature]]\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n\n[[Advisor Email: Identity | Signature]]\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n',
title: "Advisor Agreement",
parameters: {
"Company Name": "ABC, Inc.",
"Effective Date": "1539662400000",
"Company Signatory Email":
'{"id":{"id":"6dd138a4-b0c2-4ba3-8305-58e1de0d7465"},"email":"openlawuser+1@gmail.com","identifiers":[{"identityProviderId":"openlaw","identifier":"openlawuser+1@gmail.com"}]}',
"Advisor Name": "John Smith",
"Company Signatory": "Jane Davis",
"Advisor Email":
'{"id":{"id":"28e46837-c653-4e25-a6ce-7c39f05fa624"},"email":"openlawuser+2@gmail.com","identifiers":[{"identityProviderId":"openlaw","identifier":"openlawuser+2@gmail.com"}]}',
"No Services": "false",
"Advisor Address":
'{"placeId":"ChIJWbGLkg9gwokR76ZxzYbdnpM","streetName":"Main Street","streetNumber":"123","city":"Queens","state":"New York","country":"United States","zipCode":"11354","formattedAddress":"123 Main St, Flushing, NY 11354, USA"}',
"Company Address":
'{"placeId":"ChIJWbGLkg9gwokR76ZxzYbdnpM","streetName":"Main Street","streetNumber":"123","city":"Queens","state":"New York","country":"United States","zipCode":"11354","formattedAddress":"123 Main St, Flushing, NY 11354, USA"}',
},
paragraphs: {},
templates: {},
};
apiClient.downloadAsPdf(params);
# downloadDraftAsJson
Download draft information in a JSON file. (Note: The JSON file for this request only includes information about the draft, including its ID, title, alias (private name), creation date, and signatories. The file does not include the full draft content like the JSON file downloads for a template or contract.)
Browser only
This request can be made only in a browser and not in a Node.js environment.
GET /draft/json/:draftId
Parameters
Name | Type | Description |
---|---|---|
draftId | string | Required. The ID of the draft to be downloaded. |
Example
GET /draft/json/cb3ba52ccd277f650859f60b9a4cf8284393827121e86861a6a79a61868f37ca
APIClient
const draftId =
"cb3ba52ccd277f650859f60b9a4cf8284393827121e86861a6a79a61868f37ca";
apiClient.downloadDraftAsJson(draftId);
# Contract
# uploadContract
Upload a contract.
POST /upload/contract
Content-Type: text/plain;charset=UTF-8
Parameters
Name | Type | Description |
---|---|---|
params | Object | Required. The object containing information about the contract to be uploaded. |
Example params
payload
{
"templateId": "d76ede8ca437f6da06b1e09f115393318faf29fdc5bdaaf0b2e889886136edf4",
"title": "Advisor Agreement",
"text": "This Advisor Agreement is entered into between [[Company Name: Text]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n",
"creator": "8f26427b-0853-469b-a4f1-132190b7373e",
"parameters": {
"Company Name": "ABC, Inc.",
"Effective Date": "1537426800000",
"Number of Shares": "1000",
"Years Vesting": "4",
"Unit of Vesting": "250",
"Company Signatory Email": "{\"id\":{\"id\":\"8f26427b-0853-469b-a4f1-132190b7373e\"},\"email\":\"openlawuser+1@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+1@gmail.com\"}]}",
"Advisor Name": "John Smith",
"Company Signatory": "Mary Davis",
"Advisor Email": "{\"id\":{\"id\":\"38e0eb6b-0d52-4fd8-a77d-19686fd3843a\"},\"email\":\"openlawuser+2@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+2@gmail.com\"}]}",
"Time of Vesting": "Yearly",
"No Services": "false",
"Advisor Address": "{\"placeId\":\"EiI5ODcgTWFpbiBTdHJlZXQsIE5ldyBZb3JrLCBOWSwgVVNB\",\"streetName\":\"Main Street\",\"streetNumber\":\"987\",\"city\":\"Brooklyn\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11201\",\"formattedAddress\":\"987 Main St, Brooklyn, NY 11201, USA\"}",
"Company Address": "{\"placeId\":\"ChIJWbGLkg9gwokR76ZxzYbdnpM\",\"streetName\":\"Main Street\",\"streetNumber\":\"123\",\"city\":\"Queens\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11354\",\"formattedAddress\":\"123 Main St, Flushing, NY 11354, USA\"}"
},
"overriddenParagraphs": {},
"agreements": {},
"readonlyEmails": [],
"editEmails": [],
"draftId": "8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a"
}
You can also include the following optional param to disable email notifications that would normally be sent when the contract is ready to be signed and when signatures are confirmed:
{
...
"options": {"sendNotification": "false"}
}
APIClient
const params = {
templateId:
"d76ede8ca437f6da06b1e09f115393318faf29fdc5bdaaf0b2e889886136edf4",
title: "Advisor Agreement",
text:
'This Advisor Agreement is entered into between [[Company Name: Text]] ("Corporation") and [[Advisor Name]] ("Advisor") as of [[Effective Date: Date]] ("Effective Date"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company\'s request (the "Services"). {{No Services "Do you want to limit the advisor\'s services?" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field "What field should the advisor not participate in?"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity | Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n',
creator: "8f26427b-0853-469b-a4f1-132190b7373e",
parameters: {
"Company Name": "ABC, Inc.",
"Effective Date": "1537426800000",
"Number of Shares": "1000",
"Years Vesting": "4",
"Unit of Vesting": "250",
"Company Signatory Email":
'{"id":{"id":"8f26427b-0853-469b-a4f1-132190b7373e"},"email":"openlawuser+1@gmail.com","identifiers":[{"identityProviderId":"openlaw","identifier":"openlawuser+1@gmail.com"}]}',
"Advisor Name": "John Smith",
"Company Signatory": "Mary Davis",
"Advisor Email":
'{"id":{"id":"38e0eb6b-0d52-4fd8-a77d-19686fd3843a"},"email":"openlawuser+2@gmail.com","identifiers":[{"identityProviderId":"openlaw","identifier":"openlawuser+2@gmail.com"}]}',
"Time of Vesting": "Yearly",
"No Services": "false",
"Advisor Address":
'{"placeId":"EiI5ODcgTWFpbiBTdHJlZXQsIE5ldyBZb3JrLCBOWSwgVVNB","streetName":"Main Street","streetNumber":"987","city":"Brooklyn","state":"New York","country":"United States","zipCode":"11201","formattedAddress":"987 Main St, Brooklyn, NY 11201, USA"}',
"Company Address":
'{"placeId":"ChIJWbGLkg9gwokR76ZxzYbdnpM","streetName":"Main Street","streetNumber":"123","city":"Queens","state":"New York","country":"United States","zipCode":"11354","formattedAddress":"123 Main St, Flushing, NY 11354, USA"}',
},
overriddenParagraphs: {},
agreements: {},
readonlyEmails: [],
editEmails: [],
draftId: "8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a",
};
apiClient.uploadContract(params);
You can also include the following optional param to disable email notifications that would normally be sent when the contract is ready to be signed and when signatures are confirmed:
const params = {
...
options: {sendNotification: false}
}
Response
Returns a promise which resolves with the string ID of the uploaded contract.
Example
"8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a"
# getContract
Get user's contract by its ID, which is a cryptographic hash of the contract.
GET /contract/raw/:contractId
Parameters
Name | Type | Description |
---|---|---|
contractId | string | Required. The ID of the contract. |
accessToken | string | The access token representing the requestor. If not specified, the current user will be used to determine who is the requestor. |
Example
GET /contract/raw/8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a?accessToken=28394728947829374823723428742389462378423874
APIClient
apiClient.getContract(
"8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a",
"28394728947829374823723428742389462378423874"
);
Response
Returns a promise which resolves with a JSON object containing information about the retrieved contract, including its content.
Example
{
"parameters": {
"Company Name": "ABC, Inc.",
"Effective Date": "1537426800000",
"Number of Shares": "1000",
"Years Vesting": "4",
"Unit of Vesting": "250",
"Company Signatory Email": "{\"id\":{\"id\":\"8f26427b-0853-469b-a4f1-132190b7373e\"},\"email\":\"openlawuser+1@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+1@gmail.com\"}]}",
"Advisor Name": "John Smith",
"Company Signatory": "Mary Davis",
"Advisor Email": "{\"id\":{\"id\":\"38e0eb6b-0d52-4fd8-a77d-19686fd3843a\"},\"email\":\"openlawuser+2@gmail.com\",\"identifiers\":[{\"identityProviderId\":\"openlaw\",\"identifier\":\"openlawuser+2@gmail.com\"}]}",
"Time of Vesting": "Yearly",
"No Services": "false",
"Advisor Address": "{\"placeId\":\"EiI5ODcgTWFpbiBTdHJlZXQsIE5ldyBZb3JrLCBOWSwgVVNB\",\"streetName\":\"Main Street\",\"streetNumber\":\"987\",\"city\":\"Brooklyn\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11201\",\"formattedAddress\":\"987 Main St, Brooklyn, NY 11201, USA\"}",
"Company Address": "{\"placeId\":\"ChIJWbGLkg9gwokR76ZxzYbdnpM\",\"streetName\":\"Main Street\",\"streetNumber\":\"123\",\"city\":\"Queens\",\"state\":\"New York\",\"country\":\"United States\",\"zipCode\":\"11354\",\"formattedAddress\":\"123 Main St, Flushing, NY 11354, USA\"}"
},
"paragraphs": {},
"content": "This Advisor Agreement is entered into between [[Company Name: Text]] (\"Corporation\") and [[Advisor Name]] (\"Advisor\") as of [[Effective Date: Date]] (\"Effective Date\"). Company and Advisor agree as follows: \n\n^ **Services**. Advisor agrees to consult with and advise Company from time to time, at Company's request (the \"Services\"). {{No Services \"Do you want to limit the advisor's services?\" While this Agreement is is effect, Advisor will not provide services to any company active in the field of [[Noncompete Field \"What field should the advisor not participate in?\"]].}}\n\n**COMPANY:**\n[[Company Signatory Email: Identity | Signature]]\n\n___________________\nName: [[Company Signatory]]\nAddress: [[Company Address: Address]]\n\n\n**ADVISOR:**\n[[Advisor Email: Identity| Signature]]\n\n___________________\nName: [[Advisor Name]]\nAddress: [[Advisor Address: Address]]\n",
"signatures": {},
"templates": {}
}
# searchContracts
List user's contracts based on search by title, alias (private name), and signatories.
GET /contracts/search
Parameters
Name | Type | Description |
---|---|---|
keyword | string | Required. The search term to filter retrieved contracts. Leaving keyword empty (an empty string for apiClient ) will return all contracts. |
page | number | Required. Which group of contracts to display. Each group consists of pageSize contracts. |
pageSize | number | Required. The number of contracts to display on page. |
sortBy | string | Required. The way in which returned contracts are to be sorted: creationdate , privatename , or title . |
Example
GET /contracts/search?keyword=advisor&page=1&pageSize=10&sortBy=creationdate
APIClient
apiClient.searchContracts("advisor", 1, 10, "creationdate");
Response
Returns a JSON object containing the number of search hits and data for the retrieved contracts.
Example
{
"nbHits": 3,
"data": [
{
"id": "8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a",
"title": "Advisor Agreement",
"creator": "openlawuser+1",
"creationDate": 1537540029000,
"privateName": "Advisor Agreement",
"signatories": ["openlawuser+1", "openlawuser+2"],
"signaturesDone": [],
"executionState": "created",
"hasPendingActions": true,
"hasExecutions": false
},
{
"id": "2dbbe1c23657f96d58de18ece4c0b311cc26fbca2551e8dc40d174af1046a00e",
"title": "Advisor Agreement",
"creator": "openlawuser+1",
"creationDate": 1537391343000,
"privateName": "Advisor Agreement",
"signatories": ["openlawuser+1", "openlawuser+2"],
"signaturesDone": ["8f26427b-0853-469b-a4f1-132190b7373e"],
"executionState": "created",
"hasPendingActions": true,
"hasExecutions": false
},
{
"id": "84a6b2cf1f197ffced3ec875e6e9b93246a4b0aa3be7e24ff6e718ef9fac50a7",
"title": "Advisor Agreement",
"creator": "openlawuser+2",
"creationDate": 1537305436000,
"privateName": "Advisor Agreement",
"signatories": ["openlawuser+1", "openlawuser+2"],
"signaturesDone": [
"38e0eb6b-0d52-4fd8-a77d-19686fd3843a",
"8f26427b-0853-469b-a4f1-132190b7373e"
],
"executionState": "running",
"hasPendingActions": false,
"hasExecutions": false
}
]
}
# sendContract
Send a contract to other users.
POST /send/contract
Content-Type: application/x-www-form-urlencoded
Parameters
Name | Type | Description |
---|---|---|
readonlyEmails | Array<string> | An array of users' emails who will have read-only access to the contract. |
editEmails | Array<string> | An array of users' emails who will have access to edit the contract. |
id | string | Required. The ID of the contract to be sent. |
Example form data
readonlyEmails=openlawuser%2B4%40gmail.com&readonlyEmails=openlawuser%2B5%40gmail.com&editEmails=openlawuser%2B3%40gmail.com&id=8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a
APIClient
apiClient.sendContract(
["openlawuser+4@gmail.com", "openlawuser+5@gmail.com"],
["openlawuser+3@gmail.com"],
"8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a"
);
# changeContractAlias
Change alias (private name) of user's contract.
GET /contract/alias/:contractId
Parameters
Name | Type | Description |
---|---|---|
contractId | string | Required. The ID of the contract to be given a new alias. |
newName | string | Required. The new alias of the contract. |
Example
GET /contract/alias/8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a?contractId=8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a&newName=Advisor%20Agreement%20Final%20Copy
APIClient
apiClient.changeContractAlias(
"8fecc55da4598a062b90b0837e7badb1c649af720ca6c1d65f9524edfffd240a",
"Advisor Agreement Final Copy"
);
Response
Returns "name changed"
if alias was successfully changed.
# stopContract
Stop smart contract transactions that are pending for a user's signed contract.
GET /contract/stop/:id
Parameters
Name | Type | Description |
---|---|---|
id | string | Required. The ID of the contract with the pending smart contract transactions. |
Example
GET /contract/stop/1ef233a92d01f16ec54f3330fd7783dcffbc86fac90ff75c4fae185db37b088b
APIClient
apiClient.stopContract(
"1ef233a92d01f16ec54f3330fd7783dcffbc86fac90ff75c4fae185db37b088b"
);
Response
Returns "contract stopped"
if smart contract transactions were successfully stopped.
# resumeContract
Resume scheduled execution of smart contract transactions that were stopped for a user's signed contract.
GET /contract/resume/:id
Parameters
Name | Type | Description |
---|---|---|
id | string | Required. The ID of the contract with the stopped smart contract transactions. |
Example
GET /contract/resume/1ef233a92d01f16ec54f3330fd7783dcffbc86fac90ff75c4fae185db37b088b
APIClient
apiClient.resumeContract(
"1ef233a92d01f16ec54f3330fd7783dcffbc86fac90ff75c4fae185db37b088b"
);
Response
Returns "contract resumed"
if smart contract transactions were successfully resumed.
# sendTxHash
Method used in connection with a contract signatory using own Ethereum account (including via MetaMask (opens new window)) to record an electronic signature and a contract ID, which is a cryptographic hash of the contract, on a blockchain network. Upon completion of that transaction for signing the contract, the transaction hash for the contract ID is passed back to the server for validation and record-keeping.
GET /contract/signature/sendTxHash
Parameters
Name | Type | Description |
---|---|---|
contractId | string | Required. The ID of the contract. |
network | string | Required. The name of the Ethereum network used for the signature transaction: Ropsten , Kovan , or Rinkeby . Support for Mainnet will be integrated soon. |
txHash | string | Required. The transaction hash resulting from signing the contract with Ethereum account. |
accessToken | string | The access token representing the signatory. If not specified, the current user will be used to determine who is signing. |
Example
GET /contract/signature/sendTxHash?contractId=703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487&network=Rinkeby&txHash=0x7128943e9d7237c8624af233594052dcd1de79fdbdb1e667883f9f2d7cb282dc&accessToken=28394728947829374823723428742389462378423874
APIClient
apiClient.sendTxHash(
"703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487",
"Rinkeby",
"0x7128943e9d7237c8624af233594052dcd1de79fdbdb1e667883f9f2d7cb282dc",
"28394728947829374823723428742389462378423874"
);
Response
Returns a promise which resolves with the status of the signature event.
Example
"signature + userId/contractId pair stored"
# getAccessToken
Method used to retrieve the access token of each signatory. Only the creator of the contract can call this.
GET /contract/token/:contractId
Parameters
Name | Type | Description |
---|---|---|
contractId | string | Required. The ID of the contract. |
Example
GET /contract/token/703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487
APIClient
apiClient.getAccessToken(
"703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487"
);
Response
Returns a promise which resolves with the map of email -> access token.
Example
{
"signatory1@email.com": "28942389472398472894edaf23",
"signatory2@email.com": "6ed32244238947239844edaf23"
}
# prepareSignature
Method used in connection with a contract signatory using own Ethereum account (including via MetaMask (opens new window)) to record an electronic signature and a contract ID, which is a cryptographic hash of the contract, on a blockchain network. Upon completion of that transaction for signing the contract and once the transaction hash has been sent back to the server for validation and record-keeping, the signature, network, and address of the smart contract associated with the transaction are also sent back.
GET /prepareSignature/contract/:contractId
Parameters
Name | Type | Description |
---|---|---|
contractId | string | Required. The ID of the contract. |
fullName | string | Required. The full name of the person signing. |
accessToken | string | The access token representing the signatory. If not specified, the current user will be used to determine who is signing. |
Example
GET /prepareSignature/contract/703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487?fullName=My%20Full%20Name&accessToken=28394728947829374823723428742389462378423874
APIClient
apiClient.prepareSignature(
"703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487",
"My Full Name",
"28394728947829374823723428742389462378423874"
);
Response
Returns a promise which resolves with the signature, network, and address of the smart contract associated with the signature transaction.
Example
{
"signature": "0x85fh946322957458934859038908903845ec5a7c4ad0f5c88e4076c65f3bb",
"network": "Rinkeby",
"contract": "0x481607326133f3dBC085d762dA587AE7196C63C6"
}
# signContract
Method used to let OpenLaw take care of the entire signature process. The OpenLaw protocol will prepare the signature, create and send a transaction, and keep track of its status.
GET /sign/contract/:contractId
Parameters
Name | Type | Description |
---|---|---|
contractId | string | Required. The ID of the contract. |
fullName | string | Required. The full name of the person signing. |
accessToken | string | The access token representing the signatory. If not specified, the current user will be used to determine who is signing. |
Example
GET /sign/contract/703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487?fullName=My%20Full%20Name&accessToken=28394728947829374823723428742389462378423874
APIClient
apiClient.signContract(
"703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487",
"My Full Name",
"28394728947829374823723428742389462378423874"
);
Response
Returns a promise which resolves with the transaction hash associated with the signature.
Example
{
"txHash": "0xd415aae656fc08c39a32bcf4eadba6d98754f94a5a1fe82d4819cfbf15238393"
}
# loadContractStatus
Method used to retrieve the status of a contract, including the statuses of the contract's signature events and any smart contract executions.
GET /contract/sign/status
Parameters
Name | Type | Description |
---|---|---|
id | string | Required. The ID of the contract. |
accessToken | string | The access token representing the signatory. If not specified, the current user will be used to determine who is signing. |
Example
GET /contract/sign/status?id=873f5a548045b8407d76824d9d4a594bbed49bf7db95f9c39d6a07bce1637194&accessToken=28394728947829374823723428742389462378423874
APIClient
apiClient.loadContractStatus(
"873f5a548045b8407d76824d9d4a594bbed49bf7db95f9c39d6a07bce1637194",
"28394728947829374823723428742389462378423874"
);
Response
Returns a promise which resolves with a JSON object containing information about the contract, including its signature events and any smart contract executions.
Example
{
"signatures": {
"openlawuser+1@gmail.com": {
"txHash": "0xf796c3a17a9df838bd18d434389a56574c1ef3771c4900b5b55a2b57ad8553d4",
"errorMsg": "",
"status": "success",
"done": true,
"network": "Rinkeby"
},
"openlawuser+2@gmail.com": {
"txHash": "0x8d00200c65f9d15c6c5e3000d7cf04cc5d573ab8f1d8e8d442a43263f74b2825",
"errorMsg": "",
"status": "success",
"done": true,
"network": "Rinkeby"
}
},
"ethereumCalls": [
{
"startDate": 1547060580000,
"endDate": 1547060760000,
"network": "Rinkeby",
"description": "Payroll call",
"calls": [
{
"id": 0,
"status": "the transaction has been added to the chain and successfully executed",
"scheduleDate": 1547060580000,
"startDate": 1547060594000,
"tx": "0x09b252f309343426507f9539c0ed61214e63519ce8212b5e5136663038096040"
},
{
"pendingCall": {
"from": "[from address in the call]",
"to": "[contract address]",
"data": "[the transaction data (used to sign and send the transaction from MetaMask or other means)]",
"erc712": {
"type": "[the type definition from the function signature]",
"typeName": "[the type name - e.g., MyFunctionNameCall]",
"message": "[the data to sign (values for the type)]",
"signature": "[if available, the signature]"
}
}
}
]
}
]
}
If the contract includes a smart contract execution that involves a delegated call, the object pendingCall
will include data of the type described in the example above. If the call is not a delegated call, the object pendingCall
is null.
If the call is delegated but not an ERC-712 call, the object erc712
is null.
# downloadContractAsDocx
Download contract as Word file.
Browser only
This request can be made only in a browser and not in a Node.js environment.
GET /contract/docx/:contractId
Parameters
Name | Type | Description |
---|---|---|
contractId | string | Required. The ID of the contract to be downloaded. |
Example
GET /contract/docx/703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487
APIClient
const contractId =
"703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487";
apiClient.downloadContractAsDocx(contractId);
# downloadContractAsPdf
Download contract as PDF file.
Browser only
This request can be made only in a browser and not in a Node.js environment.
GET /contract/pdf/:contractId
Parameters
Name | Type | Description |
---|---|---|
contractId | string | Required. The ID of the contract to be downloaded. |
Example
GET /contract/pdf/703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487
APIClient
const contractId =
"703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487";
apiClient.downloadContractAsPdf(contractId);
# downloadContractAsJson
Download contract as JSON file.
Browser only
This request can be made only in a browser and not in a Node.js environment.
GET /contract/json/:contractId
Parameters
Name | Type | Description |
---|---|---|
contractId | string | Required. The ID of the contract to be downloaded. |
Example
GET /contract/json/703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487
APIClient
const contractId =
"703e3f8c6e91fc7ba35633974ea96acab4c29c5ef17300bd6f5651ee53338487";
apiClient.downloadContractAsJson(contractId);
# Network
# getCurrentNetwork
Get the application level Ethereum network that has been set by an Admin
user to be the default network for all signatures and smart contract executions (if no contract level network is specified in a template for the executions) performed on an OpenLaw instance.
GET /network
Parameters
None
APIClient
apiClient.getCurrentNetwork();
Response
Returns a JSON object containing the name of the selected Ethereum network ("Ropsten"
, "Kovan"
, or "Rinkeby"
) and the address of the smart contract that handles the signature transaction. Support for "Mainnet"
will be integrated soon.
Example
{ "name": "Rinkeby", "address": "0x74de946322957ec5a7c4ad0f5c88e4076c65f3bb" }
# changeEthereumNetwork
Change the default application level Ethereum network used for all signatures and smart contract executions (if no contract level network is specified in a template for the executions) performed on an OpenLaw instance.
Authentication
This resource can only be accessed by a logged in user with an Admin
role as further explained in the toAdminUser method.
GET /ethereum/changeEthereumNetwork/:name
Parameters
Name | Type | Description |
---|---|---|
name | string | Required. The name of the Ethereum network used for the signature transaction: Ropsten , Kovan , or Rinkeby . Support for Mainnet will be integrated soon. |
Example
GET /ethereum/changeEthereumNetwork/Rinkeby
APIClient
apiClient.changeEthereumNetwork("Rinkeby");
Response
Returns confirmation that the network was changed if successful.
Example
"new network linked!"
# User
# searchUsers
List users based on search by name and email.
Authentication
This resource can only be accessed by a logged in user with an Admin
role as further explained in the toAdminUser method.
GET /users/search
Parameters
Name | Type | Description |
---|---|---|
keyword | string | Required. The search term to filter retrieved users. Leaving keyword empty (an empty string for apiClient ) will return all users. |
page | number | Required. Which group of users to display. Each group consists of pageSize users. |
pageSize | number | Required. The number of users to display on page. |
Example
GET /users/search?keyword=john&page=1&pageSize=25
APIClient
apiClient.searchUsers("john", 1, 25);
Response
Returns a JSON object containing the number of search hits and data for the retrieved users.
Example
{
"nbHits": 2,
"data": [
{
"id": "1ca57c56-e08c-48cc-8727-d516d6a8363c",
"email": "openlawuser+5@gmail.com",
"name": "John Doe",
"role": "user"
},
{
"id": "f0bf888a-1f45-4277-a6d0-a71bb95095ed",
"email": "openlawuser+6@gmail.com",
"name": "John Smith",
"role": "user"
}
]
}
# toAdminUser
Change role of a user to Admin
, which allows user to access additional features such as deleting and restoring templates, viewing the list of all other users, changing permissions of and deleting other users, loading a set of standard templates into an instance, and changing the application level Ethereum network.
Authentication
This resource can only be accessed by a logged in user with an Admin
role.
GET /users/toadmin
Parameters
Name | Type | Description |
---|---|---|
userId | string | Required. The ID of the user to receive Admin role. |
Example
GET /users/toadmin?userId=f0bf888a-1f45-4277-a6d0-a71bb95095ed
APIClient
apiClient.toAdminUser("f0bf888a-1f45-4277-a6d0-a71bb95095ed");
Response
Returns confirmation that the user role was changed if successful.
Example
"f0bf888a-1f45-4277-a6d0-a71bb95095ed is now admin!"
# toRestricted
Change role of a user to restricted NoAccessUser
, which prevents user from accessing a majority of the features of an instance, including editing templates.
Authentication
This resource can only be accessed by a logged in user with an Admin
role as further explained in the toAdminUser method.
GET /users/torestricted
Parameters
Name | Type | Description |
---|---|---|
userId | string | Required. The ID of the user to receive NoAccessUser role. |
Example
GET /users/torestricted?userId=f0bf888a-1f45-4277-a6d0-a71bb95095ed
APIClient
apiClient.toRestricted("f0bf888a-1f45-4277-a6d0-a71bb95095ed");
Response
Returns confirmation that the user role was changed if successful.
Example
"f0bf888a-1f45-4277-a6d0-a71bb95095ed is now restricted user again!"
# toStandardUser
Change role of a user to StandardUser
, which is the default permission for a newly-registered user.
Authentication
This resource can only be accessed by a logged in user with an Admin
role as further explained in the toAdminUser method.
GET /users/touser
Parameters
Name | Type | Description |
---|---|---|
userId | string | Required. The ID of the user to receive StandardUser role. |
Example
GET /users/touser?userId=f0bf888a-1f45-4277-a6d0-a71bb95095ed
APIClient
apiClient.toStandardUser("f0bf888a-1f45-4277-a6d0-a71bb95095ed");
Response
Returns confirmation that the user role was changed if successful.
Example
"f0bf888a-1f45-4277-a6d0-a71bb95095ed is now user again!"
# deleteUser
Delete a user.
Authentication
This resource can only be accessed by a logged in user with an Admin
role as further explained in the toAdminUser method.
GET /users/delete
Parameters
Name | Type | Description |
---|---|---|
userId | string | Required. The ID of the user to be deleted. |
Example
GET /users/delete?userId=f0bf888a-1f45-4277-a6d0-a71bb95095ed
APIClient
apiClient.deleteUser("f0bf888a-1f45-4277-a6d0-a71bb95095ed");
Response
Returns JSON object containing the user ID and a page reload value which would be true
if deleted user was current user and false
if user was deleted by an Admin
user.
Example
{
"userId": "f0bf888a-1f45-4277-a6d0-a71bb95095ed",
"reload": false
}
# Address
# getAddressDetails
Method used as part of AddressVariable
to get details about a selected address. An Address variable generates an address using the Google Maps API.
GET /address/details
Parameters
Name | Type | Description |
---|---|---|
placeId | string | Required. The ID of the address (generated by the Google Maps API). |
Example
GET /address/details?placeId=ChIJWbGLkg9gwokR76ZxzYbdnpM
APIClient
apiClient.getAddressDetails("ChIJWbGLkg9gwokR76ZxzYbdnpM");
Response
Returns a JSON object containing information about the selected address.
Example
{
"city": "Queens",
"placeId": "ChIJWbGLkg9gwokR76ZxzYbdnpM",
"state": "New York",
"zipCode": "11354",
"country": "United States",
"streetName": "Main Street",
"streetNumber": "123",
"address": "123 Main St, Flushing, NY 11354, USA"
}
# searchAddress
Method used as part of AddressVariable
and the Google Maps API to autosuggest addresses based on user input. An Address variable generates an address using the Google Maps API.
GET /address/search
Parameters
Name | Type | Description |
---|---|---|
term | string | Required. The input term to filter returned addresses. |
Example
GET /address/search?term=123%20main%20street%2C%20new
APIClient
apiClient.searchAddress("123 main street new");
Response
Returns an array of JSON objects containing autosuggested addresses based on the input term.
Example
[
{
"address": "123 Main Street, Flushing, NY, USA",
"placeId": "ChIJWbGLkg9gwokR76ZxzYbdnpM"
},
{
"address": "123 East Main Street, Newark, DE, USA",
"placeId": "ChIJA3nOmjqqx4kR05lfIoFkzXU"
},
{
"address": "123 Main Street, Stafford, New York, USA",
"placeId": "EigxMjMgTWFpbiBTdHJlZXQsIFN0YWZmb3JkLCBOZXcgWW9yaywgVVNB"
},
{
"address": "123 Main Street, Lindley, New York, USA",
"placeId": "EicxMjMgTWFpbiBTdHJlZXQsIExpbmRsZXksIE5ldyBZb3JrLCBVU0EiMBIuChQKEgnXf-_BajLQiRES468J8OrGLhB7KhQKEgk3wvxJHAnoiRG69TsslLduoQ"
},
{
"address": "123 Main Street, New York, NY, USA",
"placeId": "EiIxMjMgTWFpbiBTdHJlZXQsIE5ldyBZb3JrLCBOWSwgVVNB"
}
]
# Community Activity
# getCommunityActivity
List community activity events in reverse chronological order. Events include template edits, template creations, template comments, and new user registrations.
GET /recentActivity
Parameters
Name | Type | Description |
---|---|---|
filter | string | Required. Filter recent activity using a comma-separated list of event types: TemplateHistoryUpdated , TemplateHistoryCreated , TemplateHistoryCommentCreated , UserCreated . Leaving filter empty (an empty string for apiClient ) will return all activity types as if no filter were applied. |
page | number | Required. Which group of community activity events to display. Each group consists of pageSize events. |
pageSize | number | Required. The number of community activity events to display on page. |
Example
GET /recentActivity?filter=TemplateCreated%2CTemplateUpdated&page=1&pageSize=5
APIClient
apiClient.getCommunityActivity(
"TemplateHistoryCreated,TemplateHistoryUpdated",
1,
5
);
Response
Returns a JSON object containing the total number of community activity events and data for each retrieved event.
Example
{
"nbHits": 100,
"data": [
{
"EventType": "TemplateCreated",
"creator": "openlawuser+1",
"timestamp": "2018-09-21T15:20:02.102772",
"title": "Ridesharing Agreement"
},
{
"EventType": "TemplateUpdated",
"creator": "openlawuser+1",
"timestamp": "2018-09-21T12:15:26.31683",
"title": "Sample Agreement"
},
{
"EventType": "TemplateUpdated",
"creator": "openlawuser+1",
"timestamp": "2018-09-21T10:58:59.412818",
"title": "Advisor Agreement"
},
{
"EventType": "TemplateCreated",
"creator": "openlawuser+1",
"timestamp": "2018-09-21T09:45:40.854215",
"title": "Loan Agreement"
},
{
"EventType": "TemplateCreated",
"creator": "openlawuser+1",
"timestamp": "2018-09-21T07:18:11.321141",
"title": "Employee Stock Award"
}
]
}