API Version 2 - Changelog - Cloud


2024-04

Security Updates

Updated vulnerable dependencies.


2024-01

Entries

The following API is updated to always return entryType, even if the OData $select query options is used and it doesn't include entryType:

  • GET /Repositories/{repositoryId}/Entries/{entryId}

Searches

The following API is updated to always return entryType, even if the OData $select query options is used and it doesn't include entryType:

  • GET /Repositories/{repositoryId}/Searches/{taskId}/Results

SimpleSearches

The following API is updated to always return entryType, even if the OData $select query options is used and it doesn't include entryType:

  • POST /Repositories/{repositoryId}/SimpleSearches
2023-10: Initial Release - Changes from V1

The following compares the Laserfiche Repository API V1 with V2 at time of release.

AuditReasons

Features

[BREAKING] Restructured the response body to return a single wrapped list for the following API:

  • GET /Repositories/{repoId}/AuditReasons
Entries

Features

[NEW] Added export APIs:

  • POST /Repositories/{repositoryId}/Entries/{entryId}/Export
    • This API is used to export an entry and returns a response with a download link, if successful. This API may time out if the operation takes longer than 60 seconds. Use the below long operation asynchronous /ExportAsync if you run into this restriction.
  • POST /Repositories/{repositoryId}/Entries/{entryId}/ExportAsync
    • This API is used to start an export task and returns a task id. This API follows a long operation pattern and does not have the restrictions in the /Export API. See below to learn more about the long operations.

[BREAKING] Removed export related APIs:

  • HEAD /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/edoc
  • GET /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/edoc
  • POST /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/GetEdocWithAuditReason

[NEW] Added import APIs:

  • POST /Repositories/{repositoryId}/Entries/{entryId}/Folder/Import
    • This API is used to import a file and returns a response indicating if it was successful. This API has a maximum file size limit of 100MB and may time out if the operation takes longer than 60 seconds. Use the below long operation asynchronous /ImportAsync if you run into this restriction.
  • POST /Repositories/{repositoryId}/Entries/CreateMultipartUploadUrls
    • This API is used to request URLs for uploading a large file in chunks. After the file chunks are written to the URLs, the import task can be started by calling the /ImportUploadedParts API.
  • POST /Repositories/{repositoryId}/Entries/{entryId}/Folder/ImportUploadedParts
    • This API is used to start an import task and returns a task id. This API has a maximum file size limit of 64GB, and API follows a long operation pattern. Furthermore, it does not have the restrictions in the /Import API. See below to learn more about the long operations.

[BREAKING] Removed import API:

  • POST /Repositories/{repoId}/Entries/{parentEntryId}/{fileName}

[BREAKING] Renamed the request body properties, renamed the response body properties, and changed the success status code to 202 Accepted for the following API:

  • DELETE /Repositories/{repoId}/Entries/{entryId}

[BREAKING] Moved the autoRename query parameter to the request body for the following API:

  • PATCH /Repositories/{repoId}/Entries/{entryId}

[BREAKING] Removed the Laserfiche.Repository. in the URL and changed the response to return an Entry for the following APIs:

  • DELETE /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/edoc
  • DELETE /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/pages

[BREAKING] Removed the Laserfiche.Repository. in the URL, renamed the formatFields query parameter, and restructured the fields portion of the response body for the following API:

  • GET /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Folder/children

[BREAKING] Removed the Laserfiche.Repository. in the URL and moved the autoRename query parameter to the request body for the following API. Additionally, moved the copy functionality out to a new POST /Repositories/{repositoryId}/Entries/{entryId}/Folder/Copy API.

  • POST /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Folder/children

[BREAKING] Removed the Laserfiche.Repository. in the URL, moved the autoRename query parameter to the request body, renamed the response body properties, and changed the success status code to 202 Accepted for the following API:

  • POST /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Folder/CopyAsync

[BREAKING] Renamed the formatValue query parameter and restructured the response body for the following API:

  • GET /Repositories/{repoId}/Entries/{entryId}/fields

[BREAKING] Restructured the request body and restructured the response body for the following API:

  • PUT /Repositories/{repoId}/Entries/{entryId}/fields

[BREAKING] Restructured the request body and renamed the response body properties for the following API:

  • PUT /Repositories/{repoId}/Entries/{entryId}/links

[BREAKING] Renamed the response body properties for the following APIs:

  • GET /Repositories/{repoId}/Entries/{entryId}/links
  • GET /Repositories/{repoId}/Entries/{entryId}/tags
  • PUT /Repositories/{repoId}/Entries/{entryId}/tags

[BREAKING] Restructured the request body for the following API:

  • PUT /Repositories/{repoId}/Entries/{entryId}/template
LinkDefinitions

[BREAKING] Renamed the response body properties for the following APIs:

  • GET /Repositories/{repoId}/LinkDefinitions
  • GET /Repositories/{repoId}/LinkDefinitions/{linkTypeId}
Repositories

Features

[BREAKING] Restructured the response body to return a wrapped list with renamed properties for the following API:

  • GET /Repositories
Searches

Features

[BREAKING] Removed APIs for getting a search status and cancelling a search. Use the new v2 Tasks APIs for getting the status and cancelling a set of one or more Tasks, including Search.

  • GET /Repositories/{repoId}/Searches/{searchToken}
  • DELETE /Repositories/{repoId}/Searches/{searchToken}

[BREAKING] Changed the URL to POST /Repositories/{repositoryId}/Searches/SearchAsync, renamed the response body properties, and changed the success status code to 202 Accepted for the following API:

  • POST /Repositories/{repoId}/Searches

[BREAKING] Renamed the formatFields query parameter and restructured the fields portion of the response body for the following API:

  • GET /Repositories/{repoId}/Searches/{taskId}/Results
ServerSession

Features

[BREAKING] In the past, it was necessary to call POST /Repositories/{repoId}/ServerSession/Create first before making any other API calls. This is no longer required as any API can be called after receiving an access token. As a result, the following APIs have been removed.

  • POST /Repositories/{repoId}/ServerSession/Create
  • POST /Repositories/{repoId}/ServerSession/Refresh
  • POST /Repositories/{repoId}/ServerSession/Invalidate
SimpleSearches

Features

[BREAKING] Renamed the formatFields query parameter and restructured the fields portion of the response body for the following API. Additionally, 200 OK status code is returned with an empty array instead of 204 No Content when no search results are found.

  • GET /Repositories/{repoId}/SimpleSearches
TagDefinitions

Features

[BREAKING] Renamed the response body properties for the following APIs:

  • GET /Repositories/{repoId}/TagDefinitions
  • PUT /Repositories/{repoId}/TagDefinitions/{tagId}
Tasks

Features

[NEW] Added APIs for getting the status and cancelling a set of one or more Tasks.

  • GET /Repositories/{repositoryId}/Tasks
  • DELETE /Repositories/{repositoryId}/Tasks

[BREAKING] Removed APIs for getting the status and cancelling a single Task.

  • GET /Repositories/{repoId}/Tasks/{operationToken}
  • DELETE /Repositories/{repoId}/Tasks/{operationToken}

[BREAKING] Getting the status of a Task, now uses the long polling technique and could return the result immediately (e.g. if the long operation failed or completed successfully) or after at most 60 seconds.

TemplateDefinitions

Maintenance

[BREAKING] Changed the /Fields portion of the URL to /FieldDefinitions for the following APIs:

  • GET /Repositories/{repoId}/TemplateDefinitions/{templateId}/Fields
  • GET /Repositories/{repoId}/TemplateDefinitions/Fields
Long Operations

Features

[BREAKING] Applies to the following APIs:

  • DELETE /Repositories/{repositoryId}/Entries/{entryId}
  • POST /Repositories/{repositoryId}/Entries/{entryId}/Folder/CopyAsync
  • POST /Repositories/{repositoryId}/Entries/{entryId}/ExportAsync
  • POST /Repositories/{repositoryId}/Entries/{entryId}/Folder/ImportUploadedParts
  • POST /Repositories/{repositoryId}/Searches/SearchAsync

Long operations will return a taskId property instead of a token. The taskId will still be used by the Tasks APIs for getting the status and cancelling long operations.

Error handling has now been centralized. Long operations will return a taskId property immediately if possible, and errors (e.g. validation errors or the errors that may occur during the execution of the operation) can be found by checking the status of the long operation using GET /Repositories/{repositoryId}/Tasks. Previously in v1, errors could be returned when creating the API or when checking the status of the long operation.

Other

Features

OAuth 2.0 scopes are mandatory in v2 and will issue a 403 Forbidden response if your access token does not have the correct scopes. See the documentation in the Swagger Playground for the required OAuth scope needed to access each API. Learn more about OAuth scopes here.

Properties with null value are omitted during response serialization, if the corresponding property is a Collection type, or a Nullable Integral type.