ONLYOFFICE DocSpace Files API
The browsable version of this reference, with a request builder and code samples, is published at https://api.onlyoffice.com/docspace/api-backend/usage-api/.
All URIs are relative to https://yourportal.onlyoffice.com, where the host is the address of your DocSpace instance.
Endpoints
| Class | Method | HTTP request | Description |
|---|---|---|---|
| FilesFilesApi | addFileToRecent | POST /api/2.0/files/file/{fileId}/recent | Add a file to Recent |
| FilesFilesApi | addTemplates | POST /api/2.0/files/templates | Add template files |
| FilesFilesApi | changeVersionHistory | PUT /api/2.0/files/file/{fileId}/history | Change version history |
| FilesFilesApi | checkFillFormDraft | POST /api/2.0/files/masterform/{fileId}/checkfillformdraft | Open a form draft for filling |
| FilesFilesApi | copyFileAs | POST /api/2.0/files/file/{fileId}/copyas | Copy a file |
| FilesFilesApi | createEditSession | POST /api/2.0/files/file/{fileId}/edit_session | Create the editing session |
| FilesFilesApi | createFile | POST /api/2.0/files/{folderId}/file | Create a file |
| FilesFilesApi | createFileInMyDocuments | POST /api/2.0/files/@my/file | Create a file in My documents |
| FilesFilesApi | createFilePrimaryExternalLink | POST /api/2.0/files/file/{id}/link | Create the file primary external link |
| FilesFilesApi | createHtmlFile | POST /api/2.0/files/{folderId}/html | Create an HTML file |
| FilesFilesApi | createHtmlFileInMyDocuments | POST /api/2.0/files/@my/html | Create an HTML file in My documents |
| FilesFilesApi | createTextFile | POST /api/2.0/files/{folderId}/text | Create a text file |
| FilesFilesApi | createTextFileInMyDocuments | POST /api/2.0/files/@my/text | Create a text file in My documents |
| FilesFilesApi | createThumbnails | POST /api/2.0/files/thumbnails | Queue file thumbnails |
| FilesFilesApi | deleteFile | DELETE /api/2.0/files/file/{fileId} | Delete a file |
| FilesFilesApi | deleteRecent | DELETE /api/2.0/files/recent | Delete recent files |
| FilesFilesApi | deleteTemplates | DELETE /api/2.0/files/templates | Delete template files |
| FilesFilesApi | generateXlsx | POST /api/2.0/files/file/{fileId}/xlsx | Generate a form answers report |
| FilesFilesApi | getAllFormRoles | GET /api/2.0/files/file/{fileId}/formroles | Get form roles |
| FilesFilesApi | getEditDiffUrl | GET /api/2.0/files/file/{fileId}/edit/diff | Get changes URL |
| FilesFilesApi | getEditHistory | GET /api/2.0/files/file/{fileId}/edit/history | Get version history |
| FilesFilesApi | getEncryptionInfo | GET /api/2.0/files/{fileId}/access | Get file encryption information |
| FilesFilesApi | getFileHistory | GET /api/2.0/files/file/{fileId}/log | Get file history |
| FilesFilesApi | getFileInfo | GET /api/2.0/files/file/{fileId} | Get file information |
| FilesFilesApi | getFileLinks | GET /api/2.0/files/file/{id}/links | Get file external links |
| FilesFilesApi | getFilePrimaryExternalLink | GET /api/2.0/files/file/{id}/link | Get the file primary external link |
| FilesFilesApi | getFileVersionInfo | GET /api/2.0/files/file/{fileId}/history | Get file versions |
| FilesFilesApi | getFillResult | GET /api/2.0/files/file/fillresult | Get form-filling result |
| FilesFilesApi | getFormSubmissions | GET /api/2.0/files/file/{fileId}/submissions | Get form submission results |
| FilesFilesApi | getPresignedFileUri | GET /api/2.0/files/file/{fileId}/presigned | Get a signed download address |
| FilesFilesApi | getPresignedUri | GET /api/2.0/files/file/{fileId}/presigneduri | Get file download link |
| FilesFilesApi | getProtectedFileUsers | GET /api/2.0/files/file/{fileId}/protectusers | Get users for document protection |
| FilesFilesApi | getReferenceData | POST /api/2.0/files/file/referencedata | Resolve a spreadsheet reference |
| FilesFilesApi | getXlsx | GET /api/2.0/files/file/{fileId}/xlsx | Get form report generation status |
| FilesFilesApi | isFormPDF | GET /api/2.0/files/file/{fileId}/isformpdf | Check the PDF file |
| FilesFilesApi | lockFile | PUT /api/2.0/files/file/{fileId}/lock | Lock a file |
| FilesFilesApi | manageFormFilling | PUT /api/2.0/files/file/{fileId}/manageformfilling | Perform form filling action |
| FilesFilesApi | openEditFile | GET /api/2.0/files/file/{fileId}/openedit | Get the editor configuration |
| FilesFilesApi | restoreFileVersion | POST /api/2.0/files/file/{fileId}/restoreversion | Restore a file version |
| FilesFilesApi | saveEditingFileFromForm | PUT /api/2.0/files/file/{fileId}/saveediting | Save edited file content |
| FilesFilesApi | saveFileAsPdf | POST /api/2.0/files/file/{id}/saveaspdf | Save a file as PDF |
| FilesFilesApi | saveFormRoleMapping | POST /api/2.0/files/file/{fileId}/formrolemapping | Save form role mapping |
| FilesFilesApi | setCustomFilterTag | PUT /api/2.0/files/file/{fileId}/customfilter | Set the Custom Filter editing mode |
| FilesFilesApi | setEncryptionInfo | PUT /api/2.0/files/{fileId}/access | Set file encryption information |
| FilesFilesApi | setFileExternalLink | PUT /api/2.0/files/file/{id}/links | Set a file external link |
| FilesFilesApi | setFileOrder | PUT /api/2.0/files/{fileId}/order | Set file order |
| FilesFilesApi | setFilesOrder | PUT /api/2.0/files/order | Set order of files |
| FilesFilesApi | startEditFile | POST /api/2.0/files/file/{fileId}/startedit | Open an editing session |
| FilesFilesApi | startFillingFile | PUT /api/2.0/files/file/{fileId}/startfilling | Start filling a form |
| FilesFilesApi | toggleFileFavorite | GET /api/2.0/files/favorites/{fileId} | Set the file favorite status |
| FilesFilesApi | trackEditFile | GET /api/2.0/files/file/{fileId}/trackeditfile | Track an editing session |
| FilesFilesApi | updateFile | PUT /api/2.0/files/file/{fileId} | Update a file |
| FilesFoldersApi | checkUpload | POST /api/2.0/files/{folderId}/upload/check | Check for upload conflicts |
| FilesFoldersApi | createFolder | POST /api/2.0/files/folder/{folderId} | Create a folder |
| FilesFoldersApi | createFolderPrimaryExternalLink | POST /api/2.0/files/folder/{id}/link | Create the folder primary external link |
| FilesFoldersApi | createReportFolderHistory | POST /api/2.0/files/folder/{folderId}/log/report | Start the folder history report generation |
| FilesFoldersApi | deleteFolder | DELETE /api/2.0/files/folder/{folderId} | Delete a folder |
| FilesFoldersApi | generateXlsxByFolder | POST /api/2.0/files/folder/{folderId}/xlsx | Generate XLSX report by folder |
| FilesFoldersApi | getFavoritesFolder | GET /api/2.0/files/@favorites | Get the Favorites section |
| FilesFoldersApi | getFilesUsedSpace | GET /api/2.0/files/filesusedspace | Get used space of files |
| FilesFoldersApi | getFolder | GET /api/2.0/files/{folderId}/formfilter | Get folder form filter |
| FilesFoldersApi | getFolderByFolderId | GET /api/2.0/files/{folderId} | Get a folder by ID |
| FilesFoldersApi | getFolderHistory | GET /api/2.0/files/folder/{folderId}/log | Get folder history |
| FilesFoldersApi | getFolderInfo | GET /api/2.0/files/folder/{folderId} | Get folder information |
| FilesFoldersApi | getFolderLinks | GET /api/2.0/files/folder/{id}/links | Get folder external links |
| FilesFoldersApi | getFolderPath | GET /api/2.0/files/folder/{folderId}/path | Get the folder path |
| FilesFoldersApi | getFolderPrimaryExternalLink | GET /api/2.0/files/folder/{id}/link | Get the folder primary external link |
| FilesFoldersApi | getFolders | GET /api/2.0/files/{folderId}/subfolders | Get subfolders |
| FilesFoldersApi | getFormsFolder | GET /api/2.0/files/@forms | Get the Forms section |
| FilesFoldersApi | getMyFolder | GET /api/2.0/files/@my | Get the My documents section |
| FilesFoldersApi | getNewFolderItems | GET /api/2.0/files/{folderId}/news | Get new folder items |
| FilesFoldersApi | getRecentFolder | GET /api/2.0/files/recent | Get the Recent section |
| FilesFoldersApi | getReportFolderHistory | GET /api/2.0/files/folder/{folderId}/log/report | Get the folder history report generation status |
| FilesFoldersApi | getRootFolders | GET /api/2.0/files/@root | Get filtered sections |
| FilesFoldersApi | getTrashFolder | GET /api/2.0/files/@trash | Get the Trash section |
| FilesFoldersApi | insertFile | POST /api/2.0/files/{folderId}/insert | Insert a file |
| FilesFoldersApi | insertFileToMyFromBody | POST /api/2.0/files/@my/insert | Insert a file into My documents |
| FilesFoldersApi | renameFolder | PUT /api/2.0/files/folder/{folderId} | Rename a folder |
| FilesFoldersApi | setFolderOrder | PUT /api/2.0/files/folder/{folderId}/order | Set folder order |
| FilesFoldersApi | setFolderPrimaryExternalLink | PUT /api/2.0/files/folder/{id}/links | Set the folder external link |
| FilesFoldersApi | terminateReportFolderHistory | DELETE /api/2.0/files/folder/{folderId}/log/report | Terminate the folder history report generation |
| FilesFoldersApi | uploadFile | POST /api/2.0/files/{folderId}/upload | Upload a file |
| FilesFoldersApi | uploadFileToMy | POST /api/2.0/files/@my/upload | Upload a file to My documents |
| FilesOperationsApi | abortUploadSession | DELETE /api/2.0/files/{folderId}/session/{sessionId} | Abort an upload session |
| FilesOperationsApi | addFavorites | POST /api/2.0/files/favorites | Add favorite files and folders |
| FilesOperationsApi | bulkDownload | PUT /api/2.0/files/fileops/bulkdownload | Bulk download |
| FilesOperationsApi | checkConversionStatus | GET /api/2.0/files/file/{fileId}/checkconversion | Get conversion status |
| FilesOperationsApi | checkMoveOrCopyBatchItems | GET /api/2.0/files/fileops/move | Check move or copy conflicts |
| FilesOperationsApi | checkMoveOrCopyDestFolder | GET /api/2.0/files/fileops/checkdestfolder | Check the destination folder |
| FilesOperationsApi | copyBatchItems | PUT /api/2.0/files/fileops/copy | Copy files and folders |
| FilesOperationsApi | createUploadSession | POST /api/2.0/files/{folderId}/upload/create_session | Chunked upload |
| FilesOperationsApi | createUploadSessionInFolder | POST /api/2.0/files/{folderId}/session | Create an upload session |
| FilesOperationsApi | deleteBatchItems | PUT /api/2.0/files/fileops/delete | Delete files and folders |
| FilesOperationsApi | deleteFavoritesFromBody | DELETE /api/2.0/files/favorites | Delete favorite files and folders |
| FilesOperationsApi | deleteFileVersions | PUT /api/2.0/files/fileops/deleteversion | Delete file versions |
| FilesOperationsApi | duplicateBatchItems | PUT /api/2.0/files/fileops/duplicate | Duplicate files and folders |
| FilesOperationsApi | emptyTrash | PUT /api/2.0/files/fileops/emptytrash | Empty the Trash folder |
| FilesOperationsApi | finalizeSession | PUT /api/2.0/files/{folderId}/session/{sessionId}/finalize | Finalize an upload session |
| FilesOperationsApi | getOperationStatuses | GET /api/2.0/files/fileops | Get active file operations |
| FilesOperationsApi | getOperationStatusesByType | GET /api/2.0/files/fileops/{operationType} | Get file operations by type |
| FilesOperationsApi | markAsRead | PUT /api/2.0/files/fileops/markasread | Mark files and folders as read |
| FilesOperationsApi | moveBatchItems | PUT /api/2.0/files/fileops/move | Move files and folders |
| FilesOperationsApi | startFileConversion | PUT /api/2.0/files/file/{fileId}/checkconversion | Start file conversion |
| FilesOperationsApi | terminateTasks | PUT /api/2.0/files/fileops/terminate/{id} | Cancel file operations |
| FilesOperationsApi | updateFileComment | PUT /api/2.0/files/file/{fileId}/comment | Update a comment |
| FilesOperationsApi | uploadAsyncSession | POST /api/2.0/files/{folderId}/session/{sessionId}/upload | Upload a numbered chunk |
| FilesOperationsApi | uploadSession | POST /api/2.0/files/{folderId}/session/{sessionId} | Upload the next chunk |
| FilesQuotaApi | resetRoomQuota | PUT /api/2.0/files/rooms/resetquota | Reset the room quota limit |
| FilesQuotaApi | updateRoomsQuota | PUT /api/2.0/files/rooms/roomquota | Change the room quota limit |
| FilesSettingsApi | changeAccessToThirdparty | PUT /api/2.0/files/thirdparty | Change the third-party settings access |
| FilesSettingsApi | changeAutomaticallyCleanUp | PUT /api/2.0/files/settings/autocleanup | Update the trash bin auto-clearing setting |
| FilesSettingsApi | changeDefaultAccessRights | PUT /api/2.0/files/settings/dafaultaccessrights | Change the default access rights |
| FilesSettingsApi | changeDeleteConfirm | PUT /api/2.0/files/changedeleteconfrim | Ask for delete confirmation |
| FilesSettingsApi | changeDownloadZip | PUT /api/2.0/files/settings/downloadtargz | Change the download archive format |
| FilesSettingsApi | changeExternalSharingSettings | PUT /api/2.0/files/settings/externalsharingsettings | Configure external sharing |
| FilesSettingsApi | checkDocServiceUrl | PUT /api/2.0/files/docservice | Set the document service address |
| FilesSettingsApi | displayFileExtension | PUT /api/2.0/files/displayfileextension | Display a file extension |
| FilesSettingsApi | displayRecent | PUT /api/2.0/files/displayrecent | Show the Recent section |
| FilesSettingsApi | externalShare | PUT /api/2.0/files/settings/external | Change the external sharing ability |
| FilesSettingsApi | externalShareSocialMedia | PUT /api/2.0/files/settings/externalsocialmedia | Change the external sharing ability on social networks |
| FilesSettingsApi | forcesave | PUT /api/2.0/files/forcesave | Change the forcesaving ability |
| FilesSettingsApi | getAutomaticallyCleanUp | GET /api/2.0/files/settings/autocleanup | Get the trash bin auto-clearing setting |
| FilesSettingsApi | getDefaultTemplates | GET /api/2.0/files/settings/defaulttemplate | Get the default template setting |
| FilesSettingsApi | getDocServiceUrl | GET /api/2.0/files/docservice | Get the document service address |
| FilesSettingsApi | getFilesModule | GET /api/2.0/files/info | Get the Documents module information |
| FilesSettingsApi | getFilesSettings | GET /api/2.0/files/settings | Get file settings |
| FilesSettingsApi | hideConfirmCancelOperation | PUT /api/2.0/files/hideconfirmcanceloperation | Hide confirmation dialog when canceling operations |
| FilesSettingsApi | hideConfirmConvert | PUT /api/2.0/files/hideconfirmconvert | Hide the confirmation dialog when converting |
| FilesSettingsApi | hideConfirmRoomLifetime | PUT /api/2.0/files/hideconfirmroomlifetime | Hide confirmation dialog when changing room lifetime settings |
| FilesSettingsApi | keepNewFileName | PUT /api/2.0/files/keepnewfilename | Keep the default file name |
| FilesSettingsApi | resetDefaultTemplate | DELETE /api/2.0/files/settings/defaulttemplate | Reset the default template setting |
| FilesSettingsApi | setDefaultTemplate | PUT /api/2.0/files/settings/defaulttemplate | Change the default template setting |
| FilesSettingsApi | setOpenEditorInSameTab | PUT /api/2.0/files/settings/openeditorinsametab | Open document in the same browser tab |
| FilesSettingsApi | setOrganizeRoomsGrouping | PUT /api/2.0/files/settings/organizegrouping | Organize rooms grouping |
| FilesSettingsApi | showQuickActions | PUT /api/2.0/files/showquickactions | Display quick actions |
| FilesSettingsApi | storeForcesave | PUT /api/2.0/files/storeforcesave | Change the ability to store the forcesaved files |
| FilesSettingsApi | storeOriginal | PUT /api/2.0/files/storeoriginal | Change the ability to upload original formats |
| FilesSettingsApi | updateFileIfExist | PUT /api/2.0/files/updateifexist | Update a file version if it exists |
| FilesSettingsApi | uploadDefaultTemplate | POST /api/2.0/files/settings/defaulttemplate | Upload a file as the default template setting |
| FilesSharingApi | applyExternalSharePassword | POST /api/2.0/files/share/{key}/password | Unlock a password-protected link |
| FilesSharingApi | changeFileOwner | POST /api/2.0/files/owner | Change the room or file owner |
| FilesSharingApi | getEncryptionAccess | GET /api/2.0/files/file/{fileId}/publickeys | Get file encryption keys |
| FilesSharingApi | getExternalShareData | GET /api/2.0/files/share/{key} | Resolve an external share link |
| FilesSharingApi | getFileSecurityInfo | GET /api/2.0/files/file/{id}/share | Get file sharing rights |
| FilesSharingApi | getFolderSecurityInfo | GET /api/2.0/files/folder/{id}/share | Get folder sharing rights |
| FilesSharingApi | getGroupsMembersWithFileSecurity | GET /api/2.0/files/file/{fileId}/group/{groupId}/share | Get file access of group members |
| FilesSharingApi | getGroupsMembersWithFolderSecurity | GET /api/2.0/files/folder/{folderId}/group/{groupId}/share | Get folder access of group members |
| FilesSharingApi | getSecurityInfo | POST /api/2.0/files/share | Get sharing rights in batch |
| FilesSharingApi | getSharedUsers | GET /api/2.0/files/file/{fileId}/sharedusers | Get users to mention in a file |
| FilesSharingApi | removeSecurityInfo | DELETE /api/2.0/files/share | Remove sharing rights in batch |
| FilesSharingApi | sendEditorNotify | POST /api/2.0/files/file/{fileId}/sendeditornotify | Notify mentioned users |
| FilesSharingApi | setFileSecurityInfo | PUT /api/2.0/files/file/{id}/share | Share a file |
| FilesSharingApi | setFolderSecurityInfo | PUT /api/2.0/files/folder/{id}/share | Share a folder |
| FilesSharingApi | setSecurityInfo | PUT /api/2.0/files/share | Set sharing rights in batch |
| FilesThirdPartyIntegrationApi | deleteThirdParty | DELETE /api/2.0/files/thirdparty/{providerId} | Remove a third-party account |
| FilesThirdPartyIntegrationApi | getAllProviders | GET /api/2.0/files/thirdparty/providers | Get all third-party providers |
| FilesThirdPartyIntegrationApi | getBackupThirdPartyAccount | GET /api/2.0/files/thirdparty/backup | Get the third-party backup folder |
| FilesThirdPartyIntegrationApi | getCapabilities | GET /api/2.0/files/thirdparty/capabilities | Get third-party provider capabilities |
| FilesThirdPartyIntegrationApi | getCommonThirdPartyFolders | GET /api/2.0/files/thirdparty/common | Get common third-party folders |
| FilesThirdPartyIntegrationApi | getThirdPartyAccounts | GET /api/2.0/files/thirdparty | Get the third-party accounts |
| FilesThirdPartyIntegrationApi | saveThirdParty | POST /api/2.0/files/thirdparty | Connect a third-party account |
| FilesThirdPartyIntegrationApi | saveThirdPartyBackup | POST /api/2.0/files/thirdparty/backup | Connect the third-party backup storage |
| RoomsApi | addRoomTags | PUT /api/2.0/files/rooms/{id}/tags | Attach tags to a room |
| RoomsApi | archiveRoom | PUT /api/2.0/files/rooms/{id}/archive | Archive a room |
| RoomsApi | changeRoomCover | POST /api/2.0/files/rooms/{id}/cover | Change the room cover |
| RoomsApi | createRoom | POST /api/2.0/files/rooms | Create a room |
| RoomsApi | createRoomFromTemplate | POST /api/2.0/files/rooms/fromtemplate | Create a room from the template |
| RoomsApi | createRoomLogo | POST /api/2.0/files/rooms/{id}/logo | Set the room logo |
| RoomsApi | createRoomTag | POST /api/2.0/files/tags | Create a room tag |
| RoomsApi | createRoomTemplate | POST /api/2.0/files/roomtemplate | Create a room template |
| RoomsApi | createRoomThirdParty | POST /api/2.0/files/rooms/thirdparty/{id} | Create a third-party room |
| RoomsApi | deleteCustomTags | DELETE /api/2.0/files/tags | Delete the custom room tags |
| RoomsApi | deleteRoom | DELETE /api/2.0/files/rooms/{id} | Remove a room |
| RoomsApi | deleteRoomLogo | DELETE /api/2.0/files/rooms/{id}/logo | Remove a room logo |
| RoomsApi | deleteRoomTags | DELETE /api/2.0/files/rooms/{id}/tags | Detach tags from a room |
| RoomsApi | getExternalDbSyncStatus | GET /api/2.0/files/rooms/{id}/externaldbsync | Get external DB sync status |
| RoomsApi | getNewRoomItems | GET /api/2.0/files/rooms/{id}/news | Get new items in a room |
| RoomsApi | getPublicSettings | GET /api/2.0/files/roomtemplate/{id}/public | Get room template public access |
| RoomsApi | getRoomCovers | GET /api/2.0/files/rooms/covers | Get room cover gallery |
| RoomsApi | getRoomCreatingStatus | GET /api/2.0/files/rooms/fromtemplate/status | Get the room creation progress |
| RoomsApi | getRoomIndexExport | GET /api/2.0/files/rooms/indexexport | Get the room index export |
| RoomsApi | getRoomInfo | GET /api/2.0/files/rooms/{id} | Get room information |
| RoomsApi | getRoomLinks | GET /api/2.0/files/rooms/{id}/links | Get the room links |
| RoomsApi | getRoomSecurityInfo | GET /api/2.0/files/rooms/{id}/share | Get the room access rights |
| RoomsApi | getRoomTagsInfo | GET /api/2.0/files/tags | Get available room tags |
| RoomsApi | getRoomTemplateCreatingStatus | GET /api/2.0/files/roomtemplate/status | Get room template creation status |
| RoomsApi | getRoomsFolder | GET /api/2.0/files/rooms | Get rooms |
| RoomsApi | getRoomsNewItems | GET /api/2.0/files/rooms/news | Get new items in all rooms |
| RoomsApi | getRoomsPrimaryExternalLink | GET /api/2.0/files/rooms/{id}/link | Get the room primary external link |
| RoomsApi | hasTagLinks | GET /api/2.0/files/tags/{tagName}/haslinks | Check room tag usage |
| RoomsApi | pinRoom | PUT /api/2.0/files/rooms/{id}/pin | Pin a room |
| RoomsApi | reorderRoom | PUT /api/2.0/files/rooms/{id}/reorder | Reorder room contents |
| RoomsApi | resendEmailInvitations | POST /api/2.0/files/rooms/{id}/resend | Resend the room invitations |
| RoomsApi | setPublicSettings | PUT /api/2.0/files/roomtemplate/public | Set room template public access |
| RoomsApi | setRoomLink | PUT /api/2.0/files/rooms/{id}/links | Set the room external or invitation link |
| RoomsApi | setRoomSecurity | PUT /api/2.0/files/rooms/{id}/share | Set the room access rights |
| RoomsApi | startExternalDbSync | POST /api/2.0/files/rooms/{id}/externaldbsync | Start external DB sync |
| RoomsApi | startRoomIndexExport | POST /api/2.0/files/rooms/{id}/indexexport | Start the room index export |
| RoomsApi | terminateRoomIndexExport | DELETE /api/2.0/files/rooms/indexexport | Terminate the room index export |
| RoomsApi | unarchiveRoom | PUT /api/2.0/files/rooms/{id}/unarchive | Unarchive a room |
| RoomsApi | unpinRoom | PUT /api/2.0/files/rooms/{id}/unpin | Unpin a room |
| RoomsApi | updateRoom | PUT /api/2.0/files/rooms/{id} | Update a room |
| RoomsApi | updateRoomTag | PUT /api/2.0/files/tags | Rename a room tag |
| RoomsApi | uploadRoomLogo | POST /api/2.0/files/logos | Upload a room logo image |
| RoomsGroupsApi | addRoomGroup | POST /api/2.0/files/group | Add a new room group |
| RoomsGroupsApi | changeRoomGroupIcon | POST /api/2.0/files/group/{id}/icon | Change room group icon |
| RoomsGroupsApi | deleteRoomGroup | DELETE /api/2.0/files/group/{id} | Delete a room group |
| RoomsGroupsApi | getRoomGroupInfo | GET /api/2.0/files/group/{id} | Get room group info |
| RoomsGroupsApi | getRoomGroups | GET /api/2.0/files/group | List room groups |
| RoomsGroupsApi | updateRoomGroup | PUT /api/2.0/files/group/{id} | Update room group |
| RoomsPrivacyRoomApi | deleteKeys | DELETE /api/2.0/privacyroom/keys/{id} | Delete an encryption key |
| RoomsPrivacyRoomApi | getUserKeys | GET /api/2.0/privacyroom/keys | Get own encryption keys |
| RoomsPrivacyRoomApi | getUserKeysForRoom | GET /api/2.0/privacyroom/{roomId}/access | Get private room access keys |
| RoomsPrivacyRoomApi | replaceKey | PUT /api/2.0/privacyroom/keys | Rotate an encryption key |
| RoomsPrivacyRoomApi | setKeys | POST /api/2.0/privacyroom/keys | Create an encryption key |
FilesFilesApi
addFileToRecent
FileIntegerWrapper addFileToRecent(fileId)
POST /api/2.0/files/file/{fileId}/recent
Add a file to Recent
Stamps the file as just used by the calling account and puts it at the top of that account's Recent section, then answers with the file as it stands now. The list is personal: no other member sees the change, and the file itself is untouched. Read access is enough, so a room member with view-only rights and an invited guest may call it, and a visitor who reaches the file through an external link is recorded against that link. A caller without read access is refused with 403, and an identifier that resolves to nothing answers 404. Repeating the call is safe: the file keeps a single entry and only moves back to the top. The section holds the 1000 newest entries of an account and drops the oldest beyond that on its own; folders never enter it, and an encrypted file of a private room is answered normally but never recorded. Read the section back with GET api/2.0/files/recent and drop entries with DELETE api/2.0/files/recent; whether it is offered among the sections of GET api/2.0/files/@root is decided by PUT api/2.0/files/displayrecent.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file as it stands after the entry was recorded | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The calling account cannot read this file | - | - |
| 404 | No file answers to this identifier | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
addTemplates
BooleanWrapper addTemplates(TemplatesRequestDto)
POST /api/2.0/files/templates
Add template files
Adds the listed files to the personal template list of the calling account, the set the portal offers when a new document is started from an existing one. The list belongs to the account and no other member sees it. Every authenticated member type may manage their own list, a guest is refused, and read access to each file is required. Only formats the portal treats as template documents survive: the accepted extensions arrive in extsWebTemplate of GET api/2.0/files/settings, and a file of any other format is dropped silently. Only numeric ids are accepted, so a file on a connected third-party account cannot become a template. The answer is true whenever the request was understood, which an empty list, an id that does not exist and an unreadable file all achieve, so it confirms nothing about what was added; no operation of this document reads the list back. Repeating the call is safe. Use DELETE api/2.0/files/templates to drop a file again.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TemplatesRequestDto | body | TemplatesRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true: the request was understood, which does not mean that anything was added | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
changeVersionHistory
FileIntegerArrayWrapper changeVersionHistory(fileId, ChangeHistory)
PUT /api/2.0/files/file/{fileId}/history
Change version history
Closes or reopens a revision group in the version history of a file and answers with every stored version of that file, newest first. With continueVersion=false the named version is completed: its content is stored again as a fresh version that opens a new revision group, so the editing that follows no longer extends the previous one. With continueVersion=true the last revision group is folded back into the group before it, so the next save continues that revision instead of becoming a version of its own; a file that has only one group is left as it is. A version of 0 means the current version. The caller needs the right to edit the history of the file, which the room admin, a DocSpace admin acting as room manager and a member with content-creator rights have; plain editing access is refused with 403, as are a guest and a member without access to the room. The call is mutating and not idempotent. A file that is locked, lies in Trash, is open in an editing session or is kept in a connected third-party storage is refused.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose version history is changed. | [required] [example: 1] |
| ChangeHistory | body | ChangeHistory | The change to make to the revision group. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The versions of the file after the change | FileIntegerArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not change the version history of the file | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
checkFillFormDraft
StringWrapper checkFillFormDraft(fileId, CheckFillFormDraft)
POST /api/2.0/files/masterform/{fileId}/checkfillformdraft
Open a form draft for filling
Resolves the editor address the caller must open to fill out the given PDF form, and provisions the personal draft that filling needs. The form has to live in a form-filling room and filling has to be started for it with PUT api/2.0/files/file/{fileId}/manageformfilling; a caller who may edit the form, a form whose filling has not started, and a request naming view or embedded as the action are all sent straight to the form itself. Read access to the form is enough to get an address, fill-forms access is what puts the caller into the filling flow, and a holder of an external link may call it without signing in, while a caller with neither a session nor a link key is rejected. In the filling case the call is not read-only: it copies the form into the room's in-progress folder under the caller's name, clears the new-item badge, closes the editing session of the original, and answers with the address of that copy. A repeated call reuses that copy, and a call naming an existing draft adds a discard notice when that draft is no longer valid. The answer is one URL string that may carry a #message/... fragment the editor renders as a notice. For the full editor configuration use GET api/2.0/files/file/{fileId}/openedit. A form the caller cannot open is refused with 403, and one that does not exist is answered as missing.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The identifier of the PDF form to open, as it is returned by a room listing such as GET api/2.0/files/{folderId}. The identifier of an already created draft is accepted here as well. | [required] [example: 1] |
| CheckFillFormDraft | body | CheckFillFormDraft | The revision of the form to open and what the caller intends to do with it. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The editor address to open, with an optional notice fragment | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot open the form, or asked for a past revision without history access | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
copyFileAs
FileEntryBaseWrapper copyFileAs(fileId, CopyAsJsonElement)
POST /api/2.0/files/file/{fileId}/copyas
Copy a file
Copies one file into another folder under a new title, converting its content when the new title names a different format, and answers with the copy that was created. The extension of destTitle decides what happens: the same extension as the source copies the bytes as they are, a different one has the document service convert them first, and toForm=true converts a document into a PDF form. password unlocks a source file that is protected by one. destFolderId is read as a number for a folder inside the portal and as a string for a folder in a connected third-party storage; anything else is answered with an empty body and nothing is copied. The caller needs read access to the source file and the right to create files in the destination folder, and is otherwise refused with 403; a missing file or folder is answered with 404, and a format that cannot be converted with 400. The call is mutating and not idempotent - each call adds another copy. To copy many items at once, and without converting, use PUT api/2.0/files/fileops/copy.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file to copy. | [required] [example: 1] |
| CopyAsJsonElement | body | CopyAsJsonElement | The title, the destination and the conversion options of the copy. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The copy that was created | FileEntryBaseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The content cannot be converted into the format of the new title | - | - |
| 403 | The caller may not read the file or may not create files in the destination folder | - | - |
| 404 | The file or the destination folder does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createEditSession
ChunkedUploadSessionResponseWrapperIntegerWrapper createEditSession(fileId, fileSize)
POST /api/2.0/files/file/{fileId}/edit_session
Create the editing session
Opens a chunked session that replaces the content of an existing file, which is how WebDAV clients save over a document. The answer carries the session id the later calls quote, the address of the standalone chunk handler, the expiry and the reserved size, and nothing is written until the parts reach POST api/2.0/files/{folderId}/session/{sessionId}/upload and the session is closed with PUT api/2.0/files/{folderId}/session/{sessionId}/finalize, where folderId is the folder the file lives in. Unlike an upload into a folder, the finished content does not become a new version: it overwrites the current one, and the file loses its encrypted flag and its stored conversion result in the process. The caller must be allowed to edit the file, as the owner, a room manager and a member invited with editing rights are; a reader and a guest get 403. A file that does not exist is answered as missing, and a payload above the portal limit for chunked uploads is refused before the session is created.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose content the session will replace; take the id from a folder listing or from the file itself. | [required] [example: 1] |
| fileSize | query | Long (int64) | The number of bytes the new content will take. It is checked against the portal limit for chunked uploads before the session opens, and a session left at 0 takes the whole content in a single part. | [optional] [example: 1024] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created editing session, wrapped in the success envelope | ChunkedUploadSessionResponseWrapperIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot edit this file | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
ChunkedUploadSessionResponseWrapperIntegerWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
createFile
FileIntegerWrapper createFile(folderId, CreateFileJsonElement)
POST /api/2.0/files/{folderId}/file
Create a file
Creates a file in the folder named in the route and answers with the stored file. The extension in the title decides the format: an extension of a known text, spreadsheet or presentation format is rewritten to the portal's own DOCX, XLSX or PPTX, a title with no extension at all gets DOCX added, while an unknown extension and the few formats the portal keeps as they are stay untouched; enableExternalExt=true stores the title verbatim and skips that rewriting. The content comes from one of three sources, tried in this order: formId copies a ready form out of the form gallery, templateId copies an existing file the caller can read - a number for a file in the portal, a string for one in a connected third-party storage - and with neither of them the portal's blank template for that format and the caller's language is used. The caller needs the right to create files in the folder, and the room roots, Archive and the template sections are refused even to an admin. The call is mutating and not idempotent. To create the file in the caller's own section use POST api/2.0/files/@my/file.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the file is created in. | [required] [example: 1] |
| CreateFileJsonElement | body | CreateFileJsonElement | The title of the new file and the source of its content. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created file | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createFileInMyDocuments
FileIntegerWrapper createFileInMyDocuments(CreateFileJsonElement)
POST /api/2.0/files/@my/file
Create a file in My documents
Creates a file in the caller's own My documents section and answers with the stored file. The extension in the title decides the format: an extension of a known text, spreadsheet or presentation format is rewritten to the portal's own DOCX, XLSX or PPTX, a title with no extension at all gets DOCX added, while an unknown extension and the few formats the portal keeps as they are stay untouched; enableExternalExt=true stores the title verbatim and skips that rewriting. The content comes from one of three sources, tried in this order: formId copies a ready form out of the form gallery, templateId copies an existing file the caller can read - a number for a file in the portal, a string for one in a connected third-party storage - and with neither of them the portal's blank template for that format and the caller's language is used. The call is mutating and not idempotent: each call adds another file. A guest has no My documents section of their own, so a guest cannot use this operation at all, and a template the caller cannot read is refused. To create a file in a room or any other folder use POST api/2.0/files/{folderId}/file.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CreateFileJsonElement | body | CreateFileJsonElement | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created file | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createFilePrimaryExternalLink
FileShareWrapper createFilePrimaryExternalLink(id, FileLinkRequest)
POST /api/2.0/files/file/{id}/link
Create the file primary external link
Answers with the primary external link of a file, creating it on the first call and returning the one that already exists afterwards, so the operation is idempotent in effect: a second call with other parameters does not reconfigure the existing link, and changing one is the business of PUT api/2.0/files/file/{id}/links. The parameters therefore only shape the link at the moment it is born - access its rights, expirationDate its lifetime, which for a file in a personal section is unlimited here rather than the default of a few days, internal whether only signed-in members may follow it, denyDownload whether the content may only be viewed, and password a secret to be asked for. A PDF form gets the rights it needs for filling out whatever was asked for, and a form in a form-filling room is answered with the link of the room instead. The caller needs the right to share the file and is otherwise refused with 403; a link that was deliberately revoked is not recreated but answered with 404. Read the address from sharedTo.shareLink.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The file the link points at. | [required] [example: 1] |
| FileLinkRequest | body | FileLinkRequest | The settings of the link. They are applied in full, so a field left out is reset rather than kept. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The primary external link of the file | FileShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not share the file | - | - |
| 404 | The file does not exist, or its primary link was revoked | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createHtmlFile
FileIntegerWrapper createHtmlFile(folderId, CreateTextOrHtmlFile)
POST /api/2.0/files/{folderId}/html
Create an HTML file
Creates an HTML file in the folder named in the route out of the markup passed as the content, and answers with the stored file. The .html extension is added to the title unless the title already ends with it, and a request carrying no content is rejected as an invalid request. createNewIfExist acts the other way round than its name reads: with true the file that already carries this title is updated, the markup replacing its content and a version appearing in its history, while with false, which is also the default, another file is created and its title made unique, as in Notes (1).html. Updating needs the existing file to be editable by the caller, so one that is locked, open in an editing session, encrypted or in Trash is left alone and a new file appears beside it instead. The caller needs the right to create files in the folder and is otherwise refused with 403. The call is mutating. To create the file in the caller's own section use POST api/2.0/files/@my/html.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the file is created in. | [required] [example: 1] |
| CreateTextOrHtmlFile | body | CreateTextOrHtmlFile | The title, the content and the collision behaviour of the new file. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created or updated HTML file | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not create files in this folder | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createHtmlFileInMyDocuments
FileIntegerWrapper createHtmlFileInMyDocuments(CreateTextOrHtmlFile)
POST /api/2.0/files/@my/html
Create an HTML file in My documents
Creates an HTML file in the caller's own My documents section out of the markup passed as the content, and answers with the stored file. The .html extension is added to the title unless the title already ends with it, and a request carrying no content is rejected as invalid. createNewIfExist acts the other way round than its name reads: with true the file that already carries this title is updated, the markup replacing its content and a version appearing in its history, while with false, which is also the default, another file is created and its title made unique, as in Notes (1).html. Updating needs the existing file to be editable by the caller, so one that is locked, open in an editing session, encrypted or in Trash is left alone and a new file appears beside it instead. The call is mutating: repeating it with true keeps a single file and grows its history, repeating it with false fills the section with numbered copies. A guest has no My documents section and is refused. To create the file in a room or another folder use POST api/2.0/files/{folderId}/html.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CreateTextOrHtmlFile | body | CreateTextOrHtmlFile | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created or updated HTML file | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not create a file in this section | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createTextFile
FileIntegerWrapper createTextFile(folderId, CreateTextOrHtmlFile)
POST /api/2.0/files/{folderId}/text
Create a text file
Creates a text file in the folder named in the route out of the text passed as the content, and answers with the stored file. The extension follows the content rather than the request: .txt normally, but .html as soon as the text contains something shaped like an HTML tag, so a snippet of markup sent here ends up as an HTML file; the extension is added to the title unless the title already ends with it. A request carrying no content is rejected as an invalid request. createNewIfExist acts the other way round than its name reads: with true the file that already carries this title is updated and a version appears in its history, while with false, which is also the default, another file is created and its title made unique, as in Notes (1).txt. A file that is locked, open in an editing session, encrypted or in Trash is not updated - a new file appears beside it instead. The caller needs the right to create files in the folder. The call is mutating. To create the file in the caller's own section use POST api/2.0/files/@my/text.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the file is created in. | [required] [example: 1] |
| CreateTextOrHtmlFile | body | CreateTextOrHtmlFile | The title, the content and the collision behaviour of the new file. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created or updated text file | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createTextFileInMyDocuments
FileIntegerWrapper createTextFileInMyDocuments(CreateTextOrHtmlFile)
POST /api/2.0/files/@my/text
Create a text file in My documents
Creates a text file in the caller's own My documents section out of the text passed as the content, and answers with the stored file. The extension follows the content rather than the request: .txt normally, but .html as soon as the text contains something shaped like an HTML tag, so a snippet of markup sent here ends up as an HTML file; the extension is added to the title unless the title already ends with it. A request carrying no content is rejected as invalid. createNewIfExist acts the other way round than its name reads: with true the file that already carries this title is updated and a version appears in its history, while with false, which is also the default, another file is created and its title made unique, as in Notes (1).txt. A file that is locked, open in an editing session, encrypted or in Trash is not updated - a new file appears beside it instead. The call is mutating. A guest has no My documents section and is refused. To create the file in a room or another folder use POST api/2.0/files/{folderId}/text.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CreateTextOrHtmlFile | body | CreateTextOrHtmlFile | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created or updated text file | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createThumbnails
ObjectArrayWrapper createThumbnails(BaseBatchRequestDto)
POST /api/2.0/files/thumbnails
Queue file thumbnails
Asks the portal to build preview thumbnails for the listed files, and answers at once with the same file ids that were sent. That answer echoes the request and does not confirm that anything was queued: the work is handed over to a background worker, and a failure on the way there is written to the log rather than reported to the caller. Only the file ids of the body are read - the folder ids are ignored, and a request naming no files at all is answered with an empty list. Ids of files kept in a connected third-party storage are dropped as well, because the worker handles portal storage only. Access to the individual files is not checked here; the caller has to be signed in or to reach the portal through an external share link, and an anonymous caller without such a link is refused. The call is asynchronous and safe to repeat. The thumbnails themselves are not in the answer: read thumbnailStatus and thumbnailUrl of the file, for instance with GET api/2.0/files/file/{fileId}, until the status reports the thumbnail as created.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BaseBatchRequestDto | body | BaseBatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file ids from the request, echoed back | ObjectArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteFile
FileOperationArrayWrapper deleteFile(fileId, Delete, ReturnSingleOperation)
DELETE /api/2.0/files/file/{fileId}
Delete a file
Queues the deletion of one file and answers with the caller's file operations, the one just created among them. The file is not gone when the response arrives: poll GET api/2.0/files/fileops until the operation reports finished, and read its error to learn whether the deletion succeeded. By default the file is moved to Trash, from where it can be restored; immediately=true deletes it for good instead, and inside a room, where there is no Trash, deletion is always final. deleteAfter=true postpones the deletion until the editing session on the file has ended, so a file somebody is working on is not pulled away. returnSingleOperation=true narrows the answer to this deletion instead of listing every active operation of the caller. The caller needs the right to delete the file, which the room admin, a DocSpace admin acting as room manager and a content creator acting on their own file have; editing access alone, read access, a guest and a member without access to the room are all refused. The call is destructive. To delete several items at once use PUT api/2.0/files/fileops/delete.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file to delete. | [required] [example: 1] |
| Delete | body | Delete | When and how the file is deleted. | [required] |
| ReturnSingleOperation | query | Boolean | Which operations the answer carries: true returns the operation this call started and nothing else, false returns every operation of the same kind that the caller has running or unread. When nothing was queued, which happens for an empty selection, true falls back to the full list. | [optional] [example: false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file operations of the caller, including the deletion just queued | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteRecent
deleteRecent(BaseBatchRequestDto)
DELETE /api/2.0/files/recent
Delete recent files
Removes the listed entries from the Recent section of the calling account, the history of opened files that GET api/2.0/files/recent returns. Nothing is deleted from storage and no other member's history is touched; access to the entries is not checked at all, so a file the caller can no longer read can still be cleared from their own history. Only numeric file ids are honoured, so a file on a connected third-party account cannot be cleared this way, and folder ids are accepted but change nothing because the section lists files only. The answer carries no body and reports nothing about how many entries were found: an empty request and an id that was never in the section are accepted alike. Repeating the call is safe, but an entry returns the next time the file is opened or POST api/2.0/files/file/{fileId}/recent is called for it. To hide the whole section instead, call PUT api/2.0/files/displayrecent.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BaseBatchRequestDto | body | BaseBatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Empty answer: the listed entries no longer appear in the Recent section | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteTemplates
BooleanWrapper deleteTemplates(request_body)
DELETE /api/2.0/files/templates
Delete template files
Takes the listed files off the personal template list of the calling account, leaving the files themselves untouched: only the template mark is dropped. The body of this request is a bare JSON array of numeric file ids rather than an object with a field, and a request that carries no array at all is rejected as an invalid request. Every authenticated member type may manage their own list, a guest is refused, and read access to a file is required for its mark to be dropped. The answer is true whenever the array was understood, which an empty array, an id that does not exist and a file that was never a template all achieve, so it confirms nothing about what was removed. Repeating the call is safe. Use POST api/2.0/files/templates to put a file back on the list; that operation expects an object with a fileIds field, so the two bodies are not interchangeable.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| request_body | body | List | The files to take off the template list, by id; this array is the whole request body. Only a file stored in the portal itself can be a template, which is why an id here is always numeric. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true: the files named in the array are no longer templates of the caller | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
generateXlsx
XlsxReportResponseWrapper generateXlsx(fileId)
POST /api/2.0/files/file/{fileId}/xlsx
Generate a form answers report
Queues generation of the spreadsheet that collects every answer submitted for a PDF form in a form-filling room, and answers at once with the queued task, the original form and a flag telling whether the report file is being created now or an existing one refreshed in place. Either identifier works: the id of the original form, or the id of an XLSX or CSV result file inside the room's Complete folder, from which the portal resolves the form behind it. The form must already have been opened for filling with PUT api/2.0/files/file/{fileId}/startfilling and must still live in the form-filling room that started it. The caller must be allowed to update that form's report. The call is mutating and asynchronous: the spreadsheet is not ready when the response arrives, so poll GET api/2.0/files/file/{fileId}/xlsx with the original form's id until the task reports completion, then take the produced file from the task. Calling it again while a run is still going answers with that run instead of starting a second one.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The generation task, the original form and the new-file flag | XlsxReportResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not update the report, or the file is not a started form of a form-filling room | - | - |
| 404 | The file id, or the original form behind a result file, resolves to nothing | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getAllFormRoles
FormRoleArrayWrapper getAllFormRoles(fileId)
GET /api/2.0/files/file/{fileId}/formroles
Get form roles
Returns the roles of a PDF form together with the state each of them is in, which is how a client shows who is expected to fill the form next. Every entry carries the name of the role, the account holding it, the sequence number that decides the turn and a status: the roles of earlier turns are reported as complete, those of later turns as waiting, and the role whose turn it is as either yours to fill or already in progress, depending on whether that person has opened the form; when the filling has been stopped, the role it was interrupted at is reported as stopped instead. A form whose filling was never started answers with an empty list. The file has to be a PDF form, or the completed copy of one, and anything else is refused. Read access to the form is enough, so every member of the room sees the roles, while a caller without access to the room and a guest outside it are refused with 403 and an unknown file is answered with 404. The operation is read-only. The assignment itself is written by POST api/2.0/files/file/{fileId}/formrolemapping.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The roles of the form with the state of each | FormRoleArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller has no read access to the form | - | - |
| 404 | No file with this identifier exists | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getEditDiffUrl
EditHistoryDataWrapper getEditDiffUrl(fileId, version)
GET /api/2.0/files/file/{fileId}/edit/diff
Get changes URL
Answers with everything an editor needs in order to show what changed in one version of a file: the address of the version itself, its document key and format, the address of the recorded changes, the same trio for the version it is compared against, and a token that signs the whole answer for the document service. version picks the version, and 0, the default, means the current one. changesUrl and previous are filled in only when the portal has stored the changes of that version, which is the case for versions written by an editing session; for a version uploaded as a whole they stay empty and only the file itself can be shown. The addresses are meant for the document service and carry their own time-limited keys. The caller needs the right to read the history of the file, which editing access and above grant: read-only access, commenting access, a guest and an anonymous caller are all refused, as is a file kept in a connected third-party storage. The operation is read-only. For the list of versions themselves use GET api/2.0/files/file/{fileId}/edit/history.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose changes are read. | [required] [example: 1] |
| version | query | Integer (int32) | The version to show the changes of, as reported by GET api/2.0/files/file/{fileId}/edit/history; 0 means the current version. | [optional] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The addresses and keys the editor needs to show the changes | EditHistoryDataWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getEditHistory
EditHistoryArrayWrapper getEditHistory(fileId)
GET /api/2.0/files/file/{fileId}/edit/history
Get version history
Returns the editing revisions of a file, oldest first, as the document service understands them: each entry carries the version and the revision group it belongs to, the account that saved it, when it was saved, the comment left on it, the document key of that revision and, where the portal stored them, the changes it introduced. Only the revisions a person saved are listed - the autosaves an editing session writes in between are left out, which is what separates this list from the plain version list of GET api/2.0/files/file/{fileId}/history. The caller needs the right to read the history of the file, which editing access and above grant: commenting access, read-only access, a guest, a member without access to the room and an anonymous caller are all refused, and so is a file kept in a connected third-party storage, which keeps no history in the portal. The operation is read-only. Take one entry to GET api/2.0/files/file/{fileId}/edit/diff to show its changes, or to POST api/2.0/files/file/{fileId}/restoreversion to bring it back.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The editing revisions of the file, oldest first | EditHistoryArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getEncryptionInfo
FileEncryptionInfoWrapper getEncryptionInfo(fileId)
GET /api/2.0/files/{fileId}/access
Get file encryption information
Returns what the caller needs in order to decrypt one file of an end-to-end encrypted private room: userKeys holds the key pairs of the calling account, the private half of each of them encrypted with that person's own password, and fileKeys holds the file keys that were issued to this account for this file, each naming the public key it was encrypted for. Only the keys of the calling account are ever returned, never those of the other people in the room. An account that holds no key pair yet, and a file no key was issued for, answer with empty lists rather than with an error, so an empty fileKeys means the caller cannot open that file rather than that the file is unencrypted. The caller needs read access to the file; a caller without it, and a file that does not exist, are both refused with 403. The operation is read-only. Keys are issued by PUT api/2.0/files/{fileId}/access, and the personal key pairs are managed under api/2.0/privacyroom/keys.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose encryption keys are read. Only a file in an end-to-end encrypted private room has any. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The key pairs of the caller and the file keys issued to them | FileEncryptionInfoWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The file cannot carry encryption keys | - | - |
| 403 | The caller has no read access to the file | - | - |
| 404 | The file does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFileHistory
HistoryArrayWrapper getFileHistory(fileId, fromDate, toDate, count, startIndex)
GET /api/2.0/files/file/{fileId}/log
Get file history
Returns the activity log of a single file - who renamed, moved, shared, converted, locked or edited it, and when - as the portal recorded it in its audit trail. Entries arrive newest first, and the events that belong to one action are folded into a single entry whose related list carries the rest of them. fromDate and toDate are read in the portal's time zone and narrow the range; startIndex and count page through the result, and the number of matching entries is reported in the response headers rather than in the body. The caller needs read access to the file, so a member of the room it lies in, the admin of that room and a DocSpace admin all see the same log, while a caller without access to the room is refused with 403 and an unknown id is answered with 404. The operation is read-only. Only files stored in the portal itself have a log here - a file kept in a connected third-party storage has none. For the log of a folder or a room use GET api/2.0/files/folder/{folderId}/log.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose activity log is read; only files stored in the portal itself have one. | [required] [example: 1] |
| fromDate | query | Date (date-time) | The earliest moment an entry may have, read in the time zone of the portal; left out, the log starts at the oldest entry the portal still keeps. | [optional] [example: 2025-01-01T00:00:00.0000000Z] |
| toDate | query | Date (date-time) | The latest moment an entry may have, read in the time zone of the portal; left out, the log ends at the newest entry. | [optional] [example: 2025-12-31T23:59:59.0000000Z] |
| count | query | Integer (int32) | How many entries one page holds. The number of entries that match the query is reported in the response headers, not in the body. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many entries to skip before the page begins, counted from the newest one, so pages are taken by adding the page size to it. | [optional] [example: 0] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The activity entries of the file, newest first | HistoryArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller has no read access to the file | - | - |
| 404 | No file with this identifier exists | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFileInfo
FileIntegerWrapper getFileInfo(fileId, version)
GET /api/2.0/files/file/{fileId}
Get file information
Returns one file as the portal stores it, together with the state it has for the caller: the title, the folder it lies in, the size, the current version and revision group, the addresses for viewing and editing it, the actions the caller is allowed to perform on it, the sharing rights it was reached through, and the thumbnail state. version picks an older version instead of the current one; the default of -1 means the current version. When the file belongs to another person's own section and the caller cannot read the folder holding it, the answer reports the Shared with me section as its folder, so that a client can show it in a place the caller can actually open. The caller needs read access to the file, which any member of the room it lies in has; a caller without access to the room is refused and an anonymous caller without an external share link is rejected. The operation is read-only. For every version at once use GET api/2.0/files/file/{fileId}/history.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file to read. | [required] [example: 1] |
| version | query | Integer (int32) | The version to read, as reported by GET api/2.0/files/file/{fileId}/history; -1, the default, reads the current version. | [optional] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file as it is stored, with the state it has for the caller | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFileLinks
FileShareArrayWrapper getFileLinks(id, count, startIndex)
GET /api/2.0/files/file/{id}/links
Get file external links
Lists the external links of a file, each with its identifier, title, address, rights, expiration date and download restriction. startIndex and count page through the list, and the total number of links is reported in the response headers rather than in the body. A file that has never been shared by link answers with an empty list; the primary link is part of this list once it exists, and it is the only one that is created on demand, by GET api/2.0/files/file/{id}/link. For a PDF form kept in a form-filling room the link of the room is appended to the answer, because that is the address through which the form is filled out. The caller needs the right to share the file, which its creator, the room admin and a DocSpace admin acting as room manager have; a caller without access to the file is refused and an anonymous caller is rejected. The operation is read-only. Take an identifier from here to PUT api/2.0/files/file/{id}/links to change or remove that link.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| count | query | Integer (int32) | How many entries at most to answer with, in the operations of this file that return a list; an operation that answers with a single object is not affected by it. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many entries of such a list to skip before answering, used together with count to walk through it page by page. | [optional] [example: 0] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The external links of the file | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFilePrimaryExternalLink
FileShareWrapper getFilePrimaryExternalLink(id, count, startIndex)
GET /api/2.0/files/file/{id}/link
Get the file primary external link
Answers with the primary external link of a file - the one the Copy link action of a client hands out - with its address in sharedTo.shareLink, its rights in access, and its expiration date, password flag and download restriction beside them. The link is created on the first read if the file has none, with read rights, no password and no expiry, so this operation mutates on that first call and is a plain read afterwards; repeated calls answer with the same link identifier. A PDF form in a form-filling room is answered with the link of that room, carried over to the form. The caller needs the right to share the file, which its creator, the room admin and a DocSpace admin acting as room manager have; a caller without access to the file is refused with 403 and an anonymous caller is rejected, while a link that was deliberately revoked is answered with 404 rather than being recreated. The custom links of the same file, the primary one excepted, are listed by GET api/2.0/files/file/{id}/links.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| count | query | Integer (int32) | How many entries at most to answer with, in the operations of this file that return a list; an operation that answers with a single object is not affected by it. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many entries of such a list to skip before answering, used together with count to walk through it page by page. | [optional] [example: 0] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The primary external link of the file | FileShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not share the file | - | - |
| 404 | The file does not exist, or its primary link was revoked | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFileVersionInfo
FileIntegerArrayWrapper getFileVersionInfo(fileId)
GET /api/2.0/files/file/{fileId}/history
Get file versions
Returns every stored version of a file, newest first, each of them shaped like the file itself - the version and the revision group it belongs to, the size, the comment saved with it, the addresses for viewing it, and the thumbnail and lock state. Unlike the editing revisions of GET api/2.0/files/file/{fileId}/edit/history, this list also holds the autosave revisions an editing session writes, so it is the fuller of the two, and it is the shape a client already knows how to render. The caller needs the right to read the history of the file, which is a stricter rule than reading the file: in a room only its managers and content creators may read the history, and in a personal section editing access is enough, so a member with read access to somebody else's file, and even a DocSpace admin in that position, are refused, as is an anonymous caller. The operation is read-only. To restore one of the versions use POST api/2.0/files/file/{fileId}/restoreversion, and to close or reopen a revision group PUT api/2.0/files/file/{fileId}/history.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Every stored version of the file, newest first | FileIntegerArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFillResult
FillingFormResultIntegerWrapper getFillResult(fillingSessionId)
GET /api/2.0/files/file/fillresult
Get form-filling result
Answers with the outcome of one completed form-filling session: the filled copy of the form, the original form it was made from, the number this submission was given inside the room, the identifier of the room and the account that started the filling. isRoomMember says whether the caller is a member of that room, which a client uses to decide whether the room can be offered for opening. The session is named by fillingSessionId, the value the document service reports when the filling ends; the portal remembers it only for a while after that, so a session that was never completed, one already forgotten and a value of the wrong shape are all answered as not found, while omitting the parameter is rejected as an invalid request. The operation is read-only and needs no sign-in: it is meant for the caller that has just finished filling the form through an external link, and the session identifier is the only secret involved. The filled copy itself is an ordinary file - read it with GET api/2.0/files/file/{fileId}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fillingSessionId | query | String | The identifier of the finished filling session, the value the document service reports when the filling ends. The portal remembers it only for a while afterwards, so an older session is answered as not found. | [optional] [example: 11111111-2222-3333-4444-555555555555] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The result of the completed form-filling session | FillingFormResultIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
FillingFormResultIntegerWrapper
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFormSubmissions
FormSubmissionsWrapper getFormSubmissions(fileId)
GET /api/2.0/files/file/{fileId}/submissions
Get form submission results
Returns everything that has been submitted against one PDF form: metadata describes the fields of the form, in the order they are laid out, and submissions carries one record per completed copy, each of them holding the values that were entered. It is the data behind the results table a client shows for a form, and the same data the spreadsheet report of POST api/2.0/files/file/{fileId}/xlsx is built from. Only the submissions of the version that is currently being filled are reported. The form has to be a PDF form whose filling has been started and which is still the original form of its room; a form that was never started, a copy of a form and a form whose room has been moved away are all refused. Read access to the form is enough, so every member of the room can read the results, while a caller without access to it is refused with 403. The operation is read-only. The list of roles and whose turn it is comes from GET api/2.0/files/file/{fileId}/formroles instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The submissions collected for the form, with the description of its fields | FormSubmissionsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller has no read access to the form | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getPresignedFileUri
FileLinkWrapper getPresignedFileUri(fileId)
GET /api/2.0/files/file/{fileId}/presigned
Get a signed download address
Returns a direct download address for the current content of the file together with the signature token that the document service validates, which is what the portal hands over when the editors have to fetch the document themselves. The address points at the portal's file stream endpoint and is rewritten to the host the document service can reach, so on a deployment where the editors sit behind a private address it is not the address a browser should follow. The answer also carries the extension of the stored document, leading dot included. The caller needs read access to the file, and an unknown file id is reported as missing. The call only reads, and each call mints a fresh address and token rather than reusing the previous one, so the value is worth requesting again once a token has expired. For a link meant for a person, a plain address with no token to put behind a download button, use GET api/2.0/files/file/{fileId}/presigneduri instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The download address of the file with its signature token | FileLinkWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getPresignedUri
StringWrapper getPresignedUri(fileId)
GET /api/2.0/files/file/{fileId}/presigneduri
Get file download link
Builds a download address for the current version of a file and answers with it as a plain string. The address points at the portal's own file handler and carries the file identifier, the version it was built for and a time-limited authentication key, so it can be handed to a downloader that cannot sign in to the portal itself; it stops working once that key has expired, and it keeps naming the version that was current when it was built rather than following later edits. The caller needs read access to the file: a member of the room it lies in gets an address, a caller without access to the room is refused, an unknown identifier is answered as not found and an anonymous caller is rejected. The operation is read-only and safe to repeat, though every call mints a new key. Nothing is downloaded here - follow the address to fetch the bytes. For the variant the document service signs, which comes back as an object with the file type and a token, use GET api/2.0/files/file/{fileId}/presigned.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The download address of the current file version | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getProtectedFileUsers
MentionWrapperArrayWrapper getProtectedFileUsers(fileId)
GET /api/2.0/files/file/{fileId}/protectusers
Get users for document protection
Lists the users the file is shared with, which is what a client offers when the author protects a document and picks who may still edit it. The list is built from the whole access list of the file: every entry that is not an explicit denial, with groups expanded into their members, the caller themselves and deleted accounts left out, ordered by display name. Access inherited from the room counts, so a member who never received a share on the file itself is listed too. A file kept in the legacy project storage always answers with an empty list rather than with its team. The call only reads. A guest is refused, an anonymous caller is answered with nothing, and a file id that resolves to nothing is refused as well instead of being reported as missing. For the readers to offer as mentions inside the editor use GET api/2.0/files/file/{fileId}/sharedusers.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The users the file is shared with, ordered by display name | MentionWrapperArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getReferenceData
FileReferenceWrapper getReferenceData(GetReferenceDataDtoInteger)
POST /api/2.0/files/file/referencedata
Resolve a spreadsheet reference
Resolves a reference that a formula in one spreadsheet makes to another document, and answers with the descriptor the document service needs in order to read it: the title, the download address, the file type, the document key of the co-editing session, the web editor link and the signature token. Three ways of naming the target are tried in order, and the first that resolves wins: fileKey as a file id inside the portal named by instanceId, then path looked up among the files sitting next to sourceFileId, then link, short links included, from which the file id is read out. A link that points outside this portal is not resolved at all and comes back unchanged as the address to follow. The caller needs read access to the source file and to its folder, otherwise the call is refused. The call only reads. A reference that resolves to nothing is still answered with 200, with the error text filled in and the rest of the descriptor empty, so read the error before using any other field.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| GetReferenceDataDtoInteger | body | GetReferenceDataDtoInteger | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The reference descriptor, or the same object with the error text set when nothing resolved | FileReferenceWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
getXlsx
DocumentBuilderTaskWrapper getXlsx(fileId)
GET /api/2.0/files/file/{fileId}/xlsx
Get form report generation status
Reports how far the spreadsheet of submitted form answers has got, the one queued by POST api/2.0/files/file/{fileId}/xlsx. A run is kept per portal, per caller and per form, so this reports the caller's own run and not one started by another member of the room; address it with the id of the original form rather than with the id of the produced spreadsheet. The answer carries the completion flag, the progress percentage, the error text when the run failed, and the id, name and address of the produced file once it is there. Nothing at all comes back when no run is on record for this caller and form, which is the normal answer before the first run and not an error. The call only reads and is meant to be polled until completion is reported. Any authenticated caller may ask; whether the report may be built is decided when the run is queued, not here.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the report generation task, or nothing when no run is on record | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
isFormPDF
BooleanWrapper isFormPDF(fileId)
GET /api/2.0/files/file/{fileId}/isformpdf
Check the PDF file
Tells whether a file is a PDF form that can be filled out in the portal, and answers with a single boolean. The check is by content, not by extension: the beginning of the file is read and the answer is true only when it carries the marker the editors write into the forms they produce, so an ordinary PDF, and a PDF form made in other software, both answer false. A file whose name is not a PDF at all answers false without being read. Use it before offering the form-filling operations on a file, because a document that answers false cannot be started for filling. The caller needs read access to the file, and read access is enough - a member of the room with read-only rights gets the answer; a caller without access to the room is refused and an anonymous caller is rejected. The operation is read-only and idempotent. It says nothing about the state of the filling - for that read GET api/2.0/files/file/{fileId}/formroles.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | True when the file is a PDF form made in the editors, false otherwise | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
lockFile
FileIntegerWrapper lockFile(fileId, LockFileParameters)
PUT /api/2.0/files/file/{fileId}/lock
Lock a file
Locks a file so that nobody else can change it, or releases that lock, and answers with the file as it now stands. With lockFile=true the lock is put on the file and everybody else who is editing it at that moment is dropped out of the session, the caller excepted; the lock then blocks editing, renaming and deleting for everybody but the account that set it and the room admins. With lockFile=false the lock is removed and a note about the unlocking is appended to the current version comment, unless the file lives in a connected third-party storage. Locking a file that is already locked, or unlocking one that is not, changes nothing and still answers with the file, so the call is idempotent in effect while remaining a mutating one. The caller needs the right to lock the file, which the room admin, a DocSpace admin acting as room manager and a member with content-creator rights have; a member without access to the room and a guest are refused, and so is a file in Trash. A lock set by somebody else can only be released by a room manager.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file to lock or unlock. | [required] [example: 1] |
| LockFileParameters | body | LockFileParameters | The lock state to reach. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file with its lock state as it now stands | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
manageFormFilling
manageFormFilling(fileId, ManageFormFillingDtoInteger)
PUT /api/2.0/files/file/{fileId}/manageformfilling
Perform form filling action
Drives the filling of a PDF form through its states, the action deciding which way. Action 2 starts the filling: in a form-filling room the form is opened for filling, the members whose rights are limited to filling forms are let in, and a form that has been changed since it was last started has the drafts of its previous round dropped. Action 0 stops it, which in a virtual data room records who interrupted it and at which role and notifies the people who held the other roles, and in a form-filling room closes the form for filling. Action 1 resumes a filling that was stopped, clearing that record. Action 3 puts the form back into editing, closing it for filling and remembering the version it was edited from. The file has to be a PDF form lying in a room. Starting needs the right to start the filling, which the room admin and a member with content-creator rights have, while stopping a filling that somebody else started belongs to room managers alone, so a content creator is refused with 403 there. The call is mutating; the state that resulted is read with GET api/2.0/files/file/{fileId}/formroles.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | String | The form the action applies to. Send the same value as the formId of the request body, which is the one the handler reads. | [required] |
| ManageFormFillingDtoInteger | body | ManageFormFillingDtoInteger | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The action was applied to the form | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not start, stop or resume the filling of this form | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
openEditFile
ConfigurationIntegerWrapper openEditFile(fileId, version, view, editorType, edit, fill)
GET /api/2.0/files/file/{fileId}/openedit
Get the editor configuration
Builds everything an editor client needs to open the file: the document descriptor with its download address, title, type and document key, the editor configuration with the mode, the caller's permissions, the user and the customization, the callback the editors report back to, and the signature token the document service validates. version opens one entry of the file history and requires access to that history; left out, the current revision is opened. view, edit and fill say what the client intends to do, and editorType picks the desktop, mobile or embedded layout. For a PDF form the room decides the outcome and may overrule the request: a form-filling room, a virtual data room, a public room and a user folder each produce their own mode, and a form opened from the templates folder is read-only and, outside the mobile layout, framed as embedded. When the portal is over its storage quota the configuration comes back read-only with the exceeded scope named. In a private room the caller's encryption keys are added to the editor configuration. Payment is not required and an anonymous caller opens through an external link.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the editor configuration is built for. Take the id from a folder listing such as GET api/2.0/files/{folderId}. | [required] [example: 1] |
| version | query | Integer (int32) | Which entry of the file history to open, numbered the way the file versions are. Left out, the current revision is opened; naming a version requires access to the history of the file. | [optional] [example: 1] |
| view | query | Boolean | Asks for a read-only configuration. Left off, the configuration is built for editing as far as the caller's rights and the room the file lies in allow. | [optional] [example: false] |
| editorType | query | EditorType | Which editor layout the configuration is built for: the full desktop interface, the reduced mobile one, or the embedded viewer meant to be framed inside another page. | [optional] [example: 1] [enum: 0, 1, 2] |
| edit | query | Boolean | Asks for editing rather than viewing. On a form in a form-filling room this also records that the form is being edited; the room may still turn the request into viewing or into filling. | [optional] [example: false] |
| fill | query | Boolean | Asks for a PDF form to open for filling out rather than for editing. It has no effect on a file that is not a form. | [optional] [example: false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The editor configuration for the requested file and mode | ConfigurationIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot read the file, or asked for a past version without access to the file history | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
restoreFileVersion
EditHistoryArrayWrapper restoreFileVersion(fileId, version, url)
POST /api/2.0/files/file/{fileId}/restoreversion
Restore a file version
Brings an earlier version of a file back and answers with the editing revisions of the file after the restore. Nothing is overwritten: the content of the chosen version is stored again as a new version on top of the history, carrying a comment that says which version it was reverted to, so the intervening versions stay readable. url changes the source - with it the content is fetched from that address, which is how the document service returns a document with a set of changes rolled back, and the new version records that instead. Any links that pointed at drafts of the file are dropped, and the file is marked as new for the other people who can read it. version has to name an existing version and is refused with 400 when it is missing or already the current one. The caller needs the right to edit the history of the file and is otherwise refused with 403, an anonymous caller included. The call is mutating and not idempotent. A locked file, one in Trash, one being edited, an encrypted one and one kept in a connected third-party storage are all refused.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose version is restored. | [required] [example: 1] |
| version | query | Integer (int32) | The version to restore, as reported by GET api/2.0/files/file/{fileId}/edit/history. It has to name an existing version that is not the current one. | [optional] [example: 1] |
| url | query | String | The address the content of the new version is fetched from instead of the stored version, which is how the document service hands back a document with a set of changes rolled back; left out, the stored version is used. | [optional] [example: https://document-server.example.com/cache/files/conv_1_docx/output.docx] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The editing revisions of the file after the restore | EditHistoryArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The version is missing or is already the current one | - | - |
| 403 | The caller may not change the version history of the file | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
saveEditingFileFromForm
FileIntegerWrapper saveEditingFileFromForm(fileId, DownloadUri, FileExtension, File, Forcesave)
PUT /api/2.0/files/file/{fileId}/saveediting
Save edited file content
Replaces the content of an existing file with an edited copy and answers with the file as it now stands. The content is the File part of a multipart/form-data body, and when no such part is sent the raw request body is saved instead, so an empty body empties the file. The DownloadUri query parameter does not supply content here; it is only read for the extension when FileExtension is empty. fileExtension names the format of the content being sent, and when it differs from the stored format the portal converts the content, or keeps it under a renamed copy when a third-party storage cannot convert it. The caller needs edit access to the file. The call is mutating and not idempotent: an ordinary call adds a version to the file history, while forcesave=true records an editor autosave, which overwrites the previous autosave revision instead of adding another version and leaves a running editing session in place. It is refused with 403 when the file is locked, lies in Trash, or is open in an editing session started by somebody else, and an unknown file id is reported as missing. For content too large to post in one request use POST api/2.0/files/file/{fileId}/edit_session.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose content is replaced. The submitted content is written onto this file, so it has to be the file the editing session was opened on rather than a copy of it. | [required] [example: 1] |
| DownloadUri | query | String | An address the document service saved the document at. This operation does not fetch the content from it - the content always comes from the request body - and reads it only for the extension, when no file extension is given. | [optional] [example: https://example.com/file.txt] |
| FileExtension | form | String | The format the submitted content is in, with the leading dot, as in .docx. When it differs from the format the file is stored in, the portal converts the content before saving it. Left empty, the extension is read off the download address, and failing that the stored format is assumed. | [optional] |
| File | form | File (binary) | The edited content, sent as the File part of a multipart/form-data body. When the part is missing the raw request body is saved as the content instead, so an empty body empties the file. | [optional] |
| Forcesave | form | Boolean | Records the write as an editor autosave: the file keeps its running editing session and the previous autosave revision is overwritten. Left off, the write closes the solo editing session, is refused while somebody else has the file open, and adds a version to the history. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file is saved and the stored version is returned | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The file id cannot be resolved to a storage that could accept the content | - | - |
| 403 | The caller cannot edit the file, or it is locked, in Trash, or open in somebody else's editing session | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
saveFileAsPdf
FileIntegerWrapper saveFileAsPdf(id, SaveAsPdfInteger)
POST /api/2.0/files/file/{id}/saveaspdf
Save a file as PDF
Converts a file into a PDF, stores that PDF as a new file in the folder named in the body, and answers with the file that was created. The source is left untouched, so the two files then live side by side. title names the result without an extension - the .pdf extension is added to it - and an empty title reuses the name of the source with its extension replaced. The conversion is done by the document service while the request waits, so the call takes as long as the document needs and answers with the finished file rather than with a queue entry. The caller needs read access to the source file and the right to create files in the destination folder, and is otherwise refused; a source file or a destination folder that does not exist is answered with 404. The call is mutating and not idempotent: each call adds another PDF, its title made unique when one of that name is already there. The result is marked as new for the room, and for a form the portal recognises it is stored as a PDF form. To convert in place instead use PUT api/2.0/files/file/{fileId}/checkconversion.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The file to convert; it is left untouched. | [required] [example: 1] |
| SaveAsPdfInteger | body | SaveAsPdfInteger | The destination folder and the name of the PDF. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The PDF file that was created | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 404 | The source file or the destination folder does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
saveFormRoleMapping
saveFormRoleMapping(fileId, SaveFormRoleMappingDtoInteger)
POST /api/2.0/files/file/{fileId}/formrolemapping
Save form role mapping
Assigns the roles of a PDF form to the people who are to fill them in, and starts the filling: the form is marked as being filled out, the account that called is recorded as the one who started it, everybody named in a role is notified, and the form becomes visible to the members whose room rights are limited to filling forms. Each role carries its name, the account that takes it and the sequence number that decides the turn, so the same sequence means the roles may be filled in parallel and different ones make a queue. Sending an empty role list resets the filling instead, dropping the assignment altogether. The whole set is replaced on every call, so the call is idempotent for a given set of roles but not additive. The file has to be a PDF form lying in a room; the caller needs the right to start the filling of that form, which the room admin and a member with content-creator rights have, and is otherwise refused with 403. Read back what was stored with GET api/2.0/files/file/{fileId}/formroles.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | String | The form the role mapping belongs to. Send the same value as the formId of the request body, which is the one the handler reads. | [required] |
| SaveFormRoleMappingDtoInteger | body | SaveFormRoleMappingDtoInteger | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The roles were stored and the filling was started or reset | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not start or reset the filling of this form | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setCustomFilterTag
FileIntegerWrapper setCustomFilterTag(fileId, CustomFilterParameters)
PUT /api/2.0/files/file/{fileId}/customfilter
Set the Custom Filter editing mode
Turns the Custom Filter editing mode of a spreadsheet on or off and answers with the file as it now stands. In that mode the sorting and filtering one person applies to the sheet is visible to that person alone, so that several people can work on the same data without moving the rows under each other; with the mode off, filtering is shared again, as everywhere else. Turning it on also drops everybody else out of the running editing session, the caller excepted, because the mode has to be established before the sheet is opened. Only formats that support the mode are accepted; anything else is rejected as an invalid request. The caller needs the right to use the mode in the room, which the room admin and a DocSpace admin acting as room manager have; read-only access, a member without access to the room and an anonymous caller are refused. Once the mode has been switched on by one person, only that person, a room manager or a DocSpace admin can switch it off again. The call is mutating and, called twice with the same value, changes nothing the second time.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The spreadsheet whose Custom Filter mode is switched. | [required] [example: 1] |
| CustomFilterParameters | body | CustomFilterParameters | The Custom Filter state to reach. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The spreadsheet with its Custom Filter state as it now stands | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setEncryptionInfo
setEncryptionInfo(fileId, AccessRequestKeyDto)
PUT /api/2.0/files/{fileId}/access
Set file encryption information
Issues the file keys that let the named people open one file of an end-to-end encrypted private room. Each entry of the body names the account the key is for, the public key it was encrypted with and the encrypted key itself, so the plain key never reaches the portal: the client encrypts it once per recipient with the public key that GET api/2.0/files/file/{fileId}/publickeys reports for them. The keys of the accounts named in the request are replaced, and the keys of everybody else are left as they are, which makes the call idempotent for a given set of recipients while remaining a mutating one; sending no entry for a person does not revoke that person's key. The file has to lie in a private room, and every account named in the request has to have read access to it. The caller needs read access to the file and the right to create content in that room, which its members with editing rights and its admins have; a caller without those rights, a file outside a private room and a file that does not exist are all refused with 403. Read the result back with GET api/2.0/files/{fileId}/access.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the keys are issued for; it has to lie in a private room. | [required] [example: 12345] |
| AccessRequestKeyDto | body | List | One key per account that is to open the file. The keys of the accounts named here are replaced and the keys of everybody else are left as they are, so sending no entry for a person does not revoke that person's key. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file keys were stored | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not issue keys for this file, or the file is not in a private room | - | - |
| 404 | The file does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setFileExternalLink
FileShareWrapper setFileExternalLink(id, FileLinkRequest)
PUT /api/2.0/files/file/{id}/links
Set a file external link
Creates an external link to a file, or changes or revokes an existing one, and answers with the link as it now stands. linkId decides which: an identifier that is not yet in use, the empty one included, creates a link, while the identifier of an existing link rewrites it, so the whole set of parameters is applied every time and a field left out is reset rather than kept. access carries the rights the link grants, and access set to the value that denies everything revokes the link instead - the answer is then empty, and a revoked primary link is not recreated by a later read. title names the link for the people who manage it, expirationDate limits its lifetime and is refused when it lies more than a few years ahead, password asks visitors for a secret, denyDownload leaves them with viewing only, internal admits signed-in members alone, and primary=true makes it the primary link of the file. The caller needs the right to share the file and is otherwise refused, an unknown file being answered as not found. The call is mutating.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The file the link points at. | [required] [example: 1] |
| FileLinkRequest | body | FileLinkRequest | The settings of the link. They are applied in full, so a field left out is reset rather than kept. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The link as it now stands, or nothing when it was revoked | FileShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setFileOrder
FileIntegerWrapper setFileOrder(fileId, OrderRequestDto)
PUT /api/2.0/files/{fileId}/order
Set file order
Puts a file at a given position inside its folder and answers with the file, its order reporting where it now stands. Positions count from 1, and the file that held the wanted position, together with everything after it, is shifted to make room, so the numbering of a folder stays without gaps; a position beyond the end of the folder places the file last. The value may also be sent as a dotted path, as in 1.2.3, in which case only its last segment is read. Ordering is what the manual sorting of a room is built on, and it only means something in rooms whose contents are indexed - elsewhere the value is stored and ignored. The caller needs edit access to the file, which room managers, content creators and members with editing rights have; a member acting on somebody else's file, a guest and an anonymous caller are refused with 403, and an unknown file is answered with 404. The call is mutating and idempotent. To move several items in one go use PUT api/2.0/files/order.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file to move. | [required] [example: 1] |
| OrderRequestDto | body | OrderRequestDto | The position the file is to take. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file with the position it now holds | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not reorder this file | - | - |
| 404 | The file does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setFilesOrder
FileEntryIntegerArrayWrapper setFilesOrder(OrdersRequestDtoInteger)
PUT /api/2.0/files/order
Set order of files
Puts several files and folders at given positions in one go and answers with the entries that were moved, each with the position it now holds. Every item of items names an entry by its identifier and its kind - a file or a folder - and the position it is to take, counting from 1; a position may also be sent as a dotted path, as in 1.2.3, of which only the last segment is read. The items are applied one after another in the order they are sent, and each of them shifts its neighbours, so the result depends on that order; the whole request is not one transaction, and a failure in the middle leaves the items before it moved. Every item has to lie in a room the caller may administer, which the room admin and a DocSpace admin acting as room manager do: read-only access, a guest and an anonymous caller are refused, and an identifier that matches nothing is answered as not found. Ordering only means something in rooms whose contents are indexed. The call is mutating. For a single file use PUT api/2.0/files/{fileId}/order.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| OrdersRequestDtoInteger | body | OrdersRequestDtoInteger | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The files and folders that were moved, with the positions they now hold | FileEntryIntegerArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
startEditFile
StringWrapper startEditFile(fileId, StartEdit)
POST /api/2.0/files/file/{fileId}/startedit
Open an editing session
Opens an editing session on the file and answers with the document key that identifies it, the value an editor client passes to the document service in order to join the co-editing session for that exact revision. The file is marked as being edited for as long as the session lasts, which keeps it from being deleted or moved. With editingAlone=false the portal builds the editor configuration, requires write mode plus at least one of the edit, review, comment, form-filling or filter permissions, and asks the document service to start tracking the document. With editingAlone=true the caller claims the file for itself, and the call is refused with 403 when anybody is already editing it. The caller needs edit access: a member with read access, a guest and an anonymous caller whose external link does not grant editing are all refused. The call is mutating and not idempotent. Keep the session alive with GET api/2.0/files/file/{fileId}/trackeditfile, and end it by calling that operation with isFinish=true.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file to open the editing session on. The caller needs edit access to it. | [required] [example: 1] |
| StartEdit | body | StartEdit | The session options. The body is required even when it only carries the default, so send an empty object to open an ordinary co-editing session. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The document key of the editing session | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot edit the file, or the file is already being edited and the session was claimed alone | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
startFillingFile
FileIntegerWrapper startFillingFile(fileId)
PUT /api/2.0/files/file/{fileId}/startfilling
Start filling a form
Marks a PDF form in a form-filling room as open for filling out and answers with the form file. The portal stores the filling properties on it - the room it belongs to, its title, the account that started it and the id it keeps as the original form - so that later submissions are collected against this form. The file has to be a PDF whose parent folder is a form-filling room; anything else is answered unchanged and nothing is stored. Access follows room membership rather than portal role: a member holding only form-filling access on the room may not start filling, and a caller with no access to the room at all is refused with 403 unless they can manage it, which the room owner, a room administrator and a DocSpace administrator can. The call is mutating and safe to repeat, since a repeat rewrites the same properties. Once a form is started, the answers submitted for it can be collected into a spreadsheet with POST api/2.0/files/file/{fileId}/xlsx.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The PDF form to open for filling. It has to be the form as it lies in the form-filling room itself, not a copy kept elsewhere and not a submitted result. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The form file, with the filling properties now stored on it | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller holds only form-filling access on the room, or no access to it at all | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
toggleFileFavorite
BooleanWrapper toggleFileFavorite(fileId, favorite)
GET /api/2.0/files/favorites/{fileId}
Set the file favorite status
Sets or clears the favorite mark of one file for the calling account: true adds the file to the favorites, false takes it out again. The call changes stored state even though it is a GET, so it is not one to issue speculatively; repeating it with the same value changes nothing further. The mark is personal, no other member sees it, and the file stays where it is stored. Read access is enough, so a room member with view-only rights and a guest may call it. The answer only echoes the value that was asked for: an identifier that resolves to nothing and a file the caller cannot read are skipped without a word, an encrypted file of a private room is never marked, and the requested value still comes back, so read the outcome from GET api/2.0/files/@favorites instead. A file moved to the Trash keeps its mark and is left out of that listing until it is restored. To mark several entries at once, or to mark folders, use POST api/2.0/files/favorites and DELETE api/2.0/files/favorites.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| favorite | query | Boolean | Which state to put the mark in: true adds the file to the favorites of the calling account, false removes it from them. Leaving the field out of the request removes the mark rather than setting it. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Echo of the requested state, which does not prove that the mark was changed | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Changing the favorite mark is refused for the caller | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
trackEditFile
ItemKeyValuePairBooleanStringWrapper trackEditFile(fileId, tabId, docKeyForTrack, isFinish)
GET /api/2.0/files/file/{fileId}/trackeditfile
Track an editing session
Keeps an editing session on the file alive, or ends it; an editor client calls it repeatedly while a document is open. docKeyForTrack has to be the document key of the file as it currently stands, the value POST api/2.0/files/file/{fileId}/startedit returned, and a key matching neither the current revision nor the one being edited is refused with 403. tabId names the client tab that holds the session, so several tabs and several users are tracked on one file independently. Refreshing an entry requires one of the editing rights on the file - editing, reviewing, commenting, filling or filter editing - so a reader is refused. With isFinish=false the entry is refreshed and the file stays marked as being edited; with isFinish=true the entry for that tab is dropped and the other clients are told that editing has stopped. The call changes the tracking state and never the document, and repeating it is safe. It answers key true with an empty value whenever it succeeds, so a failure arrives as an error rather than as a false key. An anonymous caller is accepted only through an external share link.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose editing session is being tracked. | [required] [example: 1] |
| tabId | query | UUID (uuid) | The client tab that holds the session, a value the client makes up once and repeats on every call about that tab. Two tabs sending different values are tracked as two sessions on the same file, while the all-zero value belongs to a session claimed for a single editor. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| docKeyForTrack | query | String | The document key of the revision being edited, as POST api/2.0/files/file/{fileId}/startedit returned it. It is checked against the file's current key on every call, so a key left over from an older revision is refused. | [optional] [example: abc123] |
| isFinish | query | Boolean | Ends the session for this tab and tells the other clients that editing has stopped. Left off, the session is refreshed and the file stays marked as being edited. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The session was refreshed or closed | ItemKeyValuePairBooleanStringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The document key does not match the revision being edited | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
ItemKeyValuePairBooleanStringWrapper
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
updateFile
FileIntegerWrapper updateFile(fileId, UpdateFile)
PUT /api/2.0/files/file/{fileId}
Update a file
Renames a file, restores one of its versions, or both at once, and answers with the file as it now stands. A non-empty title renames the file, keeping the stored extension whatever the new title says, so a rename cannot change the format; an empty or missing title leaves the name alone. A lastVersion above 0 restores that version the way POST api/2.0/files/file/{fileId}/restoreversion does, storing its content again on top of the history, while 0 or less leaves the versions untouched and answers with the file as it is - which makes this operation a read of the file when both fields are left out. The caller needs edit access, and renaming somebody else's file additionally needs room-manager rights: a member or room admin with plain editing access, read-only access, a guest and a DocSpace admin who is not a member of the room are all refused with 403, while a content creator may rename a file of their own. The call is mutating. Renaming marks the file as new for everybody else who can read it.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file to update. | [required] [example: 1] |
| UpdateFile | body | UpdateFile | The new title and the version to restore. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file after the rename, the restore, or both | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not rename the file or change its version | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
FilesFoldersApi
checkUpload
STRINGArrayWrapper checkUpload(folderId, CheckUploadRequest)
POST /api/2.0/files/{folderId}/upload/check
Check for upload conflicts
Reports which of the submitted titles already belong to a file in the folder, so an upload can decide in advance whether to overwrite or to ask for another name. Only the clashing titles come back, unordered and without repetitions, and an empty array means every name is free. Matching is by title and ignores case, so a name that differs only in capitalisation is still reported; an existing file that is encrypted is left out, because an upload cannot take it over. The call changes nothing. It needs the same right as the upload itself, the right to add content to the folder, which room managers and content creators have and readers, editors and guests do not; an archived room, a section root and a folder the caller cannot write to are all refused, while an unknown folder is answered as missing. A request without filesTitle is rejected as an invalid request, an empty list is accepted and answers with an empty array.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder whose contents the names are tested against; take the id from a listing such as GET api/2.0/files/@root. | [required] [example: 1] |
| CheckUploadRequest | body | CheckUploadRequest | The names to test against the files the folder already holds. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The submitted titles that already belong to a file in the folder | STRINGArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createFolder
FolderIntegerWrapper createFolder(folderId, CreateFolder)
POST /api/2.0/files/folder/{folderId}
Create a folder
Creates a folder inside the folder named in the path and answers with the folder as it was stored. The title is trimmed, may not be blank and is refused when it is longer than the limit the schema prints; titles are not required to be unique, so creating the same title twice leaves two folders side by side, which makes the call mutating and not idempotent. The caller needs the right to create content in the parent, which the room manager, a content creator and the owner of a personal section have; a member without that right, an archived parent, and a section root that only holds rooms - Rooms, Forms and AI agents - are all refused, as is a parent that does not exist. Rooms are not created here: use POST api/2.0/files/rooms for those, and this operation for ordinary folders within them. Members of the room are notified of the new folder. Read the identifier of the new folder from id and fill it with POST api/2.0/files/{folderId}/upload.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the request is addressed to: when a folder is created it is the parent that receives the new folder, and when a folder is renamed it is the folder that gets the new title. | [required] [example: 1] |
| CreateFolder | body | CreateFolder | The title carried by the request body. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The folder that was created | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createFolderPrimaryExternalLink
FileShareWrapper createFolderPrimaryExternalLink(id, FolderLinkRequest)
POST /api/2.0/files/folder/{id}/link
Create the folder primary external link
Answers with the primary external link of a folder or a room, creating it on the first call and returning the one that already exists afterwards, so the operation is idempotent in effect: a second call with other parameters does not reconfigure the existing link, and changing one is the business of PUT api/2.0/files/folder/{id}/links. The parameters therefore only shape the link at the moment it is born - access its rights, title its name, expirationDate its lifetime, which is unlimited here unless one is given, internal whether only signed-in members may follow it, denyDownload whether the contents may only be viewed, and password a secret to be asked for. Sending access with the value that grants nothing creates no link and answers with nothing. The caller needs the right to manage the links of the room the folder belongs to, which its manager and a portal administrator acting as room manager have, and a member with content-creator or read access is refused with 403; an unknown folder is answered with 404. Read the address from sharedTo.shareLink.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The folder or room the link belongs to. | [required] [example: 1] |
| FolderLinkRequest | body | FolderLinkRequest | The link and the way it is to be shaped. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The primary external link of the folder | FileShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not manage the links of this folder | - | - |
| 404 | The folder does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createReportFolderHistory
DocumentBuilderTaskWrapper createReportFolderHistory(folderId, format, from, to)
POST /api/2.0/files/folder/{folderId}/log/report
Start the folder history report generation
Queues a background job that renders the history of a folder into a spreadsheet, or into a CSV file when format asks for one, and saves the result in the caller's My documents. The answer is the queued task, not the report: poll GET api/2.0/files/folder/{folderId}/log/report until isCompleted is true, then take the file from resultFileId, resultFileName and resultFileUrl, of which a CSV report fills only the last two. from and to limit the exported period; leaving both out exports the whole history. While a report for the same folder and caller is still running, this call joins it and answers with the running task instead of starting a second one, so retrying is safe. The caller needs read access to the folder and may not be a guest, and the portal plan has to include the audit feature - otherwise the call is refused, with 403 for the access rule and 404 for a folder that does not exist. Only a portal administrator gets the address, browser and platform columns. Give up a running report with DELETE api/2.0/files/folder/{folderId}/log/report.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder whose history is exported; the report covers the folder itself and the entries inside it. | [required] [example: 1] |
| format | query | AuditReportFormat | The shape the report is written in: Xlsx produces a spreadsheet that is saved as a file of the portal, while Csv produces a comma-separated text file that is uploaded to My documents without being reported back with a file identifier. | [optional] [example: Xlsx] [enum: 0, 1] |
| from | query | Date (date-time) | The earliest moment an exported entry may have, read in the time zone of the portal; left out, the report starts at the oldest entry the portal still keeps. | [optional] [example: 2025-01-01T00:00:00] |
| to | query | Date (date-time) | The latest moment an exported entry may have, read in the time zone of the portal; left out, the report ends at the newest entry. | [optional] [example: 2025-12-31T23:59:59] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The queued report task | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not export the history of this folder | - | - |
| 404 | The folder does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
deleteFolder
FileOperationArrayWrapper deleteFolder(folderId, DeleteFolder)
DELETE /api/2.0/files/folder/{folderId}
Delete a folder
Queues the deletion of one folder together with everything inside it, and answers with the file operations of the caller, the one just created among them. The folder is not gone when the response arrives: poll GET api/2.0/files/fileops until the operation reports finished, and read its error to learn whether the deletion succeeded. By default the folder is moved to the Trash section, from where it can be restored; immediately=true discards it for good instead, and inside a room, where there is no Trash, deletion is always final. deleteAfter=true postpones the deletion until the editing sessions on the contents have ended, so files somebody is working on are not pulled away. The caller needs the right to delete the folder, which the room manager, a portal administrator acting as room manager and a content creator acting on a folder of their own have; editing access alone, read access and a guest are refused. The call is destructive. To delete several items at once use PUT api/2.0/files/fileops/delete.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder to delete, together with everything it holds. | [required] [example: 10] |
| DeleteFolder | body | DeleteFolder | How the deletion is to be carried out. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file operations of the caller, including the deletion just queued | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
generateXlsxByFolder
XlsxReportResponseWrapper generateXlsxByFolder(folderId)
POST /api/2.0/files/folder/{folderId}/xlsx
Generate XLSX report by folder
Rebuilds the spreadsheet that gathers the answers submitted to a form, starting from the Complete folder that holds the filled copies. The answer names the original form the results belong to, says in isNewFile whether the spreadsheet is being created or an existing one rewritten in place, and carries the queued job in task; the file itself is not ready yet, so poll GET api/2.0/files/file/{fileId}/xlsx with the identifier of the form until the task reports completion. The folder has to be the Complete folder of a form-filling room and has to hold at least one submitted copy whose original form still exists, and the caller needs the right to maintain that form, which the room manager has. A folder that does not exist, or one that holds nothing to report on, is answered with 404, and a folder of the wrong kind or a caller without those rights with 403. The call is mutating: it writes the results file of the form.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the operation acts on. Take the identifier from a listing such as GET api/2.0/files/@root or GET api/2.0/files/{folderId}: a folder stored in the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The queued report task together with the form the answers belong to | XlsxReportResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The folder is not a completed-forms folder, or the caller may not maintain the form | - | - |
| 404 | The folder, the submitted copy or the original form was not found | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFavoritesFolder
FolderContentIntegerWrapper getFavoritesFolder(userIdOrGroupId, filterType, count, startIndex, sortBy, sortOrder, filterValue)
GET /api/2.0/files/@favorites
Get the Favorites section
Returns the caller's own Favorites section: the files and folders this account has marked as favorite, together with the section folder itself. Favorites are per-account, so the entries another member marked are not listed here, and a guest sees only their own, usually empty, list. Mark a single file with GET api/2.0/files/favorites/{fileId}, or add and remove batches of files and folders with POST api/2.0/files/favorites and DELETE api/2.0/files/favorites. Nothing in the section is modified, though passing sortBy saves the requested order as the default order for this account. Entries the caller can no longer read, and entries that have been moved to the Trash section, drop out of the listing even though their favorite mark stays, so the section can shrink without an explicit unmark. folders and files hold one page of the section, total counts the entries matching the request before count and startIndex are applied, and current describes the section folder itself.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userIdOrGroupId | query | UUID (uuid) | Restricts the listing to the entries authored by this portal member, or by the members of this group; the same parameter accepts either kind of identifier. Omit it to list everything the caller can read. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| filterType | query | FilterType | Narrows the listing to a single kind of entry, such as documents, images or one type of room. Omit it to list every kind the section holds. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 22, 23, 24, 25, 26] |
| count | query | Integer (int32) | The size of one page of section content. Pair it with startIndex to walk the listing, and compare the two with total in the response to see when the last page has been read. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | The number of matching entries to skip before the returned page begins; add count to it to ask for the next page. | [optional] [example: 0] |
| sortBy | query | String | The name of the field the entries are ordered by, matched case-insensitively against the file sort fields: DateAndTime, AZ, Size, Author, Type, New, DateAndTimeCreation, RoomType, Tags, Room, CustomOrder, LastOpened and UsedSpace. A recognized value is also saved as the default order of the account and reused by later listings that omit the parameter, while a value matching none of the fields leaves that saved order in place. | [optional] [example: DateAndTime] |
| sortOrder | query | SortOrder | The direction in which the sortBy field is ordered. It is saved together with sortBy as the default order of the account. | [optional] [example: 1] [enum: 0, 1] |
| filterValue | query | String | The search string the section is filtered by: it is matched as a substring of entry titles and, for files, against the indexed document content as well. Omit it to list the section unfiltered. | [optional] [example: My Document] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The Favorites section with one page of the entries the caller marked as favorite | FolderContentIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to read the Favorites section | - | - |
| 404 | The Favorites section could not be resolved for this account | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFilesUsedSpace
FilesStatisticsResultWrapper getFilesUsedSpace()
GET /api/2.0/files/filesusedspace
Get used space of files
Reports how much storage the portal spends on documents, split by section - My documents, Trash, Rooms, Archive and, where the feature is on, AI agents - each entry naming the section and the space it takes in bytes. The figures cover the whole portal rather than the calling account, and moving an entry between sections moves its space with it, which is why deleting a file to the Trash does not free anything until the Trash is emptied. Only a caller who may change portal settings, that is the owner and the portal administrators, is allowed here; a room administrator, an ordinary member and a guest are all refused. The call is read-only, takes no parameters and answers with the sections in a fixed order. The quota of the portal as a whole, storage outside documents included, is not part of this answer.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The space taken by documents in each section, in bytes | FilesStatisticsResultWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFolder
FormsItemArrayWrapper getFolder(folderId)
GET /api/2.0/files/{folderId}/formfilter
Get folder form filter
Lists the fields the completed forms of a form-filling room carry, each of them a key and the kind of value behind it, so that a client can offer them as filters. Feed a pair from this list back as formsItemKey and formsItemType of GET api/2.0/files/{folderId} to keep only the completed forms whose field of that name holds a value. The fields are read from the search index of one of the forms already gathered, so they appear once indexing has caught up with the first submission. Only the Complete folder of a form-filling room carries such fields: for any other folder, for a folder that does not exist and for one that has been deleted the answer is an empty list rather than a refusal, and the same holds while nothing has been submitted yet. The operation reads the index alone, changes nothing and needs no authorization.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the operation acts on. Take the identifier from a listing such as GET api/2.0/files/@root or GET api/2.0/files/{folderId}: a folder stored in the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The form fields that can be used as filters, empty when the folder carries none | FormsItemArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFolderByFolderId
FolderContentIntegerWrapper getFolderByFolderId(folderId, userIdOrGroupId, sharedBy, filterType, roomId, folderType, excludeSubject, applyFilterOption, withSubFolders, extension, searchArea, formsItemKey, formsItemType, count, startIndex, sortBy, sortOrder, filterValue, Location)
GET /api/2.0/files/{folderId}
Get a folder by ID
Returns one page of the contents of a folder - its subfolders in folders, its files in files, the folder itself in current and the chain of parents in pathParts - and is the operation a client browses the file tree with. filterType, filterValue, extension, userIdOrGroupId, sharedBy and folderType narrow what is listed, applyFilterOption decides whether those filters bite on the files, on the folders or on both, and withSubFolders, which is on unless it is switched off, lets a narrowed request descend through the whole subtree instead of the top level alone. filterValue is matched against titles and against indexed document content, and indexing is asynchronous, so a file uploaded a moment ago can be missing from a search for a short while. count and startIndex page through the result while total counts everything that matches, and sortBy with sortOrder both order the page and are saved as the default order of the account. Reading a room or an ordinary folder clears its new-item marks for the caller. A caller who may not read the folder is answered with 403, and a folder that does not exist with 404.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder whose contents are listed. Each section root has an operation of its own, such as GET api/2.0/files/@my, and every other folder is opened by the identifier a listing gave for it. | [required] [example: 1] |
| userIdOrGroupId | query | UUID (uuid) | Restricts the listing to the entries authored by this portal member, or by the members of this group; the same parameter accepts either kind of identifier. Omit it to list everything the caller can read. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| sharedBy | query | UUID (uuid) | Restricts the listing to the entries this member shared, which narrows a shared listing down to what one person handed out. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| filterType | query | FilterType | Narrows the listing to a single kind of entry, such as documents, spreadsheets, images or one type of room. Omit it to list every kind the folder holds. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 22, 23, 24, 25, 26] |
| roomId | query | Integer (int32) | Keeps only the entries that lie in this room, which matters when the listing being read gathers entries from more than one of them. | [optional] [example: 1] |
| folderType | query | List | Keeps only the folders of these kinds, each given as the number of a folder type; it is how a listing is narrowed down to, say, the form-filling folders of a room. | [optional] [example: [2]] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| excludeSubject | query | Boolean | Turns userIdOrGroupId around: with true the entries of that member or group are the ones left out, with false they are the only ones kept. | [optional] [example: false] |
| applyFilterOption | query | ApplyFilterOption | Chooses which half of the listing filterType and filterValue are applied to: with Files the folders come back unfiltered, with Folders the files do, and with All both halves are filtered. | [optional] [example: 1] [enum: 0, 1, 2] |
| withSubFolders | query | Boolean | Whether a narrowed request reaches into the subfolders: with true, which is what an omitted parameter means, matching entries are gathered from the whole subtree, with false only the top level is read. It makes a difference only once filterType, userIdOrGroupId or filterValue narrows the request, because an unfiltered listing always shows the top level alone. | [optional] [example: true] |
| extension | query | String | Keeps only the files carrying one of these extensions, several of them separated by commas; the leading dot is optional. | [optional] [example: docx,pdf] |
| searchArea | query | SearchArea | Which area a listing that spans several of them is taken from - the active rooms, the archive, the room templates or the form-filling rooms. A folder that belongs to one area only settles the area itself and ignores the parameter. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
| formsItemKey | query | String | Keeps only the completed forms whose form field of this name holds a value. Take the name from GET api/2.0/files/{folderId}/formfilter, and use it in the folder that gathers the completed copies of a form-filling room. | [optional] [example: first_name] |
| formsItemType | query | String | The kind of the form field named by formsItemKey, taken from the same list; the two are sent together. | [optional] [example: text] |
| count | query | Integer (int32) | The size of one page of the listing. Pair it with startIndex to walk through the result, and compare the two with total in the response to see when the last page has been read. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | The number of matching entries to skip before the returned page begins; add count to it to ask for the next page. | [optional] [example: 0] |
| sortBy | query | String | The name of the field the entries are ordered by, matched case-insensitively against the file sort fields: DateAndTime, AZ, Size, Author, Type, New, DateAndTimeCreation, RoomType, Tags, Room, CustomOrder, LastOpened and UsedSpace. A recognized value is also saved as the default order of the account and reused by later listings that omit the parameter, while a value matching none of the fields leaves that saved order in place. | [optional] [example: DateAndTime] |
| sortOrder | query | SortOrder | The direction in which the sortBy field is ordered. It is saved together with sortBy as the default order of the account. | [optional] [example: 1] [enum: 0, 1] |
| filterValue | query | String | The search string the listing is filtered by: it is matched as a substring of entry titles and, for files, against the indexed document content as well. Omit it to list the folder unfiltered. | [optional] [example: My Document] |
| Location | query | Location | Where the entries of a tag-based listing have to live to be kept: Room keeps what lies in a room, Documents what lies in a personal section, and Link what was reached through an external link that is still valid. It shapes the Favorites and Recent listings and does nothing in an ordinary folder. | [optional] [example: 1] [enum: 1, 2, 3] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | One page of the folder contents, with the folder itself and the chain of its parents | FolderContentIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not read this folder | - | - |
| 404 | The folder does not exist | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFolderHistory
HistoryArrayWrapper getFolderHistory(folderId, fromDate, toDate, count, startIndex)
GET /api/2.0/files/folder/{folderId}/log
Get folder history
Lists what has happened to a folder and to the entries inside it - creations, renames, uploads, moves, deletions and changes of access - each record naming the action, the moment it happened and the member behind it. Records that belong to one action are grouped, so a batch arrives as a single entry carrying the rest of itself in related, and the list runs from the most recent record backwards. fromDate and toDate narrow the period, startIndex and count page through the result, and the number of records matching the request is reported in the response headers rather than in the body. Any member who can read the folder may read its history; a caller without access is answered with 403 and a folder that does not exist with 404. When the folder is a form-filling folder the caller reached through a filling invitation, the history is narrowed to what that caller may see. The call is read-only. To take the same history away as a spreadsheet, start a report with POST api/2.0/files/folder/{folderId}/log/report.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder whose activity log is read; the log covers the folder itself and the entries inside it. | [required] [example: 1] |
| fromDate | query | Date (date-time) | The earliest moment an entry may have, read in the time zone of the portal; left out, the log starts at the oldest entry the portal still keeps. | [optional] [example: 2025-01-01T00:00:00.0000000Z] |
| toDate | query | Date (date-time) | The latest moment an entry may have, read in the time zone of the portal; left out, the log ends at the newest entry. | [optional] [example: 2025-12-31T23:59:59.0000000Z] |
| count | query | Integer (int32) | How many entries one page holds. The number of entries that match the query is reported in the response headers, not in the body. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many entries to skip before the page begins, counted from the newest one, so pages are taken by adding the page size to it. | [optional] [example: 0] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | One page of the folder history, the most recent record first | HistoryArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not read this folder | - | - |
| 404 | The folder does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFolderInfo
FolderIntegerWrapper getFolderInfo(folderId)
GET /api/2.0/files/folder/{folderId}
Get folder information
Returns one folder as an object - its title, its parent, the moments it was created and last changed, the access the caller has to it, the number of items that are new for them, and the room settings when the folder is a room - without listing anything inside it. Use it to resolve a folder identifier into something displayable, and GET api/2.0/files/{folderId} when the contents are what is wanted; unlike that operation, this one leaves the new-item marks of the folder alone. Any member who can read the folder may call it, and an anonymous caller only through an external link that grants access, everybody else being refused; a folder that does not exist is answered as not found. The call is read-only. The chain of parents above the folder is not part of the answer and is read with GET api/2.0/files/folder/{folderId}/path.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the operation acts on. Take the identifier from a listing such as GET api/2.0/files/@root or GET api/2.0/files/{folderId}: a folder stored in the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The folder | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFolderLinks
FileShareArrayWrapper getFolderLinks(id)
GET /api/2.0/files/folder/{id}/links
Get folder external links
Lists the external links of a folder or a room, each with its identifier, title, address, rights, expiration date, password flag and download restriction, the primary link among them once it exists. At most the first hundred links are answered and the number returned is reported in the response headers; there are no paging parameters here. A folder that has never been shared by link answers with an empty list, and so does a member who may read the folder but not manage its links - the empty answer therefore means nothing to show you rather than no links exist. A member without access to the room is refused, an anonymous caller is rejected, and a folder that does not exist is answered as not found. The call is read-only. Take an identifier from here to PUT api/2.0/files/folder/{id}/links to change or remove that link, and read the primary one alone with GET api/2.0/files/folder/{id}/link.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The folder or room whose external links are listed. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The external links of the folder the caller may manage | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFolderPath
FileEntryBaseArrayWrapper getFolderPath(folderId)
GET /api/2.0/files/folder/{folderId}/path
Get the folder path
Returns the chain of folders that leads to the folder named in the path, ordered from the section root down to the folder itself, which is the last entry. It is what a breadcrumb trail is built from, and it also tells a client which section - a room, the personal section, the archive - a bare folder identifier belongs to. Only the folders the caller may see are part of the chain, so a member who was given access to a folder deep inside a room gets a shorter path than the room manager does. The caller needs read access to the folder and is otherwise answered with 403, while a folder that does not exist is answered as not found. The call is read-only and takes no paging parameters. To go the other way, from a folder down into its contents, call GET api/2.0/files/{folderId}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the operation acts on. Take the identifier from a listing such as GET api/2.0/files/@root or GET api/2.0/files/{folderId}: a folder stored in the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The chain of folders leading to the folder, the section root first | FileEntryBaseArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not read this folder | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFolderPrimaryExternalLink
FileShareWrapper getFolderPrimaryExternalLink(id, count, startIndex)
GET /api/2.0/files/folder/{id}/link
Get the folder primary external link
Answers with the primary external link of a folder or a room - the one the Copy link action of a client hands out - with its address in sharedTo.shareLink, its rights in access, and its title, expiration date, password flag and download restriction beside them. The link is created on the first read if the folder has none, with read rights, no password and no expiry, so this operation mutates on that first call and is a plain read afterwards; repeated calls answer with the same link identifier. The caller needs the right to manage the links of the room the folder belongs to, which its manager and a portal administrator acting as room manager have; a member with read access alone is refused with 403 and an anonymous caller is rejected, while a link that was deliberately revoked is answered with 404 rather than being recreated. The paging parameters are accepted for compatibility and leave the single link answered here unchanged. Every external link of the same folder is listed by GET api/2.0/files/folder/{id}/links.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The folder or room the operation addresses. A folder stored on the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| count | query | Integer (int32) | How many entries at most to answer with, in the operations of this folder that return a list; an operation that answers with a single object is not affected by it. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many entries of such a list to skip before answering, used together with count to walk through it page by page. | [optional] [example: 0] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The primary external link of the folder | FileShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not manage the links of this folder | - | - |
| 404 | The folder does not exist, or its primary link was revoked | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFolders
FileEntryBaseArrayWrapper getFolders(folderId)
GET /api/2.0/files/{folderId}/subfolders
Get subfolders
Lists the folders that sit directly inside the folder named in the path, ordered by title, without their own contents and without the files that lie beside them. The whole list arrives at once - there are no paging or filtering parameters here - so for a large folder, or when the files are wanted as well, use GET api/2.0/files/{folderId}, which pages and filters. A folder that holds no subfolders answers with an empty list. The caller needs read access to the folder, and only the subfolders they may see are listed, so a member of a room can get fewer entries than its manager; a caller without access is answered with 403, and a folder that does not exist, or one that has been deleted for good, is answered as not found. The call is read-only and leaves the new-item marks of the folder alone.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the operation acts on. Take the identifier from a listing such as GET api/2.0/files/@root or GET api/2.0/files/{folderId}: a folder stored in the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The direct subfolders of the folder, ordered by title | FileEntryBaseArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not read this folder | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFormsFolder
FolderContentIntegerWrapper getFormsFolder(userIdOrGroupId, filterType, count, startIndex, sortBy, sortOrder, filterValue)
GET /api/2.0/files/@forms
Get the Forms section
Returns the Forms section: the flat list of form-filling rooms the caller may read. Such rooms are stored under the Rooms tree but are surfaced only here, so GET api/2.0/files/rooms leaves them out of the active area and lists them when searchArea names the forms area instead. The section is not expanded into room content, so folders carries the rooms while files comes back empty; to read what is inside one of them, call GET api/2.0/files/{folderId} with the room identifier. Nothing is modified, though passing sortBy saves the requested order as the default order for this account. filterType, filterValue, userIdOrGroupId and the sorting parameters narrow and order the room list, count and startIndex page through it, total reports how many rooms match the request in full, and current describes the section folder itself.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userIdOrGroupId | query | UUID (uuid) | Restricts the listing to the entries authored by this portal member, or by the members of this group; the same parameter accepts either kind of identifier. Omit it to list everything the caller can read. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| filterType | query | FilterType | Narrows the listing to a single kind of entry, such as documents, images or one type of room. Omit it to list every kind the section holds. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 22, 23, 24, 25, 26] |
| count | query | Integer (int32) | The size of one page of section content. Pair it with startIndex to walk the listing, and compare the two with total in the response to see when the last page has been read. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | The number of matching entries to skip before the returned page begins; add count to it to ask for the next page. | [optional] [example: 0] |
| sortBy | query | String | The name of the field the entries are ordered by, matched case-insensitively against the file sort fields: DateAndTime, AZ, Size, Author, Type, New, DateAndTimeCreation, RoomType, Tags, Room, CustomOrder, LastOpened and UsedSpace. A recognized value is also saved as the default order of the account and reused by later listings that omit the parameter, while a value matching none of the fields leaves that saved order in place. | [optional] [example: DateAndTime] |
| sortOrder | query | SortOrder | The direction in which the sortBy field is ordered. It is saved together with sortBy as the default order of the account. | [optional] [example: 1] [enum: 0, 1] |
| filterValue | query | String | The search string the section is filtered by: it is matched as a substring of entry titles and, for files, against the indexed document content as well. Omit it to list the section unfiltered. | [optional] [example: My Document] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The Forms section with one page of the form-filling rooms available to the caller | FolderContentIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to read the Forms section | - | - |
| 404 | The Forms section could not be resolved for this account | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getMyFolder
FolderContentIntegerWrapper getMyFolder(userIdOrGroupId, filterType, applyFilterOption, count, startIndex, sortBy, sortOrder, filterValue)
GET /api/2.0/files/@my
Get the My documents section
Returns the contents of the caller's My documents section, the personal storage that belongs to this account alone and stays invisible to other members until something in it is shared explicitly. Any authenticated member that has a personal section can read it; guest accounts are not given one, and the call then answers 404. Nothing in the section is modified, though passing sortBy saves the requested order as the default order for this account. Without a filter only the top level of the section is listed; as soon as filterType, userIdOrGroupId or filterValue narrows the request, the search descends through the whole subtree. filterValue is matched against titles and against indexed document content, and the index is written asynchronously, so a file uploaded a moment ago can be missing from a search for a short while. folders and files hold one page of the result, total counts everything that matches before count and startIndex are applied, and current describes the section folder. To open a folder inside the section, call GET api/2.0/files/{folderId} with its identifier.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userIdOrGroupId | query | UUID (uuid) | Restricts the listing to the entries authored by this portal member, or by the members of this group; the same parameter accepts either kind of identifier. Omit it to list everything the caller can read. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| filterType | query | FilterType | Narrows the listing to a single kind of entry, such as documents, images or one type of room. Omit it to list every kind the section holds. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 22, 23, 24, 25, 26] |
| applyFilterOption | query | ApplyFilterOption | Chooses which half of the listing filterType and filterValue are applied to: with Files the folders come back unfiltered, with Folders the files do, and with All both halves are filtered. | [optional] [example: 1] [enum: 0, 1, 2] |
| count | query | Integer (int32) | The size of one page of section content. Pair it with startIndex to walk the listing, and compare the two with total in the response to see when the last page has been read. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | The number of matching entries to skip before the returned page begins; add count to it to ask for the next page. | [optional] [example: 0] |
| sortBy | query | String | The name of the field the entries are ordered by, matched case-insensitively against the file sort fields: DateAndTime, AZ, Size, Author, Type, New, DateAndTimeCreation, RoomType, Tags, Room, CustomOrder, LastOpened and UsedSpace. A recognized value is also saved as the default order of the account and reused by later listings that omit the parameter, while a value matching none of the fields leaves that saved order in place. | [optional] [example: DateAndTime] |
| sortOrder | query | SortOrder | The direction in which the sortBy field is ordered. It is saved together with sortBy as the default order of the account. | [optional] [example: 1] [enum: 0, 1] |
| filterValue | query | String | The search string the section is filtered by, matched as a substring of entry titles. Omit it to list the section unfiltered. | [optional] [example: My Document] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The My documents section with one page of its contents | FolderContentIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to read the My documents section | - | - |
| 404 | This account has no personal section | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getNewFolderItems
FileEntryBaseArrayWrapper getNewFolderItems(folderId)
GET /api/2.0/files/{folderId}/news
Get new folder items
Lists the entries of a folder that are new for the calling member - the files and folders created or changed there since they last opened it - ordered from the most recently changed backwards. It is what the badge of a room is filled from, and it is personal: two members of the same room get different answers. Reading this list does not clear the marks, so the same entries come back until the folder itself is opened with GET api/2.0/files/{folderId}, which does clear them. A folder with nothing new answers with an empty list, and marks disappear on their own when the entry behind them is deleted or moved out of reach. The caller needs read access to the folder and is otherwise answered with 403. The whole list arrives at once, without paging or filtering, and the call is read-only.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the operation acts on. Take the identifier from a listing such as GET api/2.0/files/@root or GET api/2.0/files/{folderId}: a folder stored in the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The entries of the folder that are new for the caller | FileEntryBaseArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not read this folder | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRecentFolder
FolderContentIntegerWrapper getRecentFolder(userIdOrGroupId, filterType, excludeSubject, applyFilterOption, searchArea, extension, count, startIndex, sortBy, sortOrder, filterValue)
GET /api/2.0/files/recent
Get the Recent section
Returns the Recent section: the files the calling account has opened lately. The section holds files only, so folders comes back empty, and it is personal, so another member's history is not visible here. A file is added when it is opened and can also be added explicitly with POST api/2.0/files/file/{fileId}/recent; DELETE api/2.0/files/recent clears the whole history, and PUT api/2.0/files/displayrecent switches the section on and off for the account, which also decides whether GET api/2.0/files/@root includes it. Nothing in the section is modified, though passing sortBy saves the requested order as the default order for this account. The listing is ordered by the moment the caller last opened each file, newest first, and sortBy and sortOrder do not change that order. files holds one page, total counts the files matching the request before count and startIndex are applied, and current describes the section folder itself.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userIdOrGroupId | query | UUID (uuid) | Restricts the listing to the files authored by this portal member, or by the members of this group; the same parameter accepts either kind of identifier. Omit it to list the whole history. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| filterType | query | FilterType | Narrows the listing to a single kind of file, such as documents, spreadsheets or images. Omit it to list every kind the history holds. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 22, 23, 24, 25, 26] |
| excludeSubject | query | Boolean | Inverts userIdOrGroupId: with true the files of that member or group are the ones left out of the listing instead of the only ones kept. | [optional] [example: false] |
| applyFilterOption | query | ApplyFilterOption | Chooses which half of a listing filterType and filterValue are applied to. The Recent section holds files only, so the value does not change what comes back. | [optional] [example: 1] [enum: 0, 1, 2] |
| searchArea | query | SearchArea | The area a listing is taken from. The Recent section is assembled from the caller's own open history rather than from an area, so the value does not change which files are returned. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
| extension | query | List | The file extensions the listing is limited to, matched against the end of the file name. The leading dot is optional, and the parameter is repeated once per extension. | [optional] [example: .docx] |
| count | query | Integer (int32) | The size of one page of section content. Pair it with startIndex to walk the listing, and compare the two with total in the response to see when the last page has been read. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | The number of matching entries to skip before the returned page begins; add count to it to ask for the next page. | [optional] [example: 0] |
| sortBy | query | String | The name of the field the entries are ordered by, matched case-insensitively against the file sort fields: DateAndTime, AZ, Size, Author, Type, New, DateAndTimeCreation, RoomType, Tags, Room, CustomOrder, LastOpened and UsedSpace. A recognized value is also saved as the default order of the account and reused by later listings that omit the parameter, while a value matching none of the fields leaves that saved order in place. The Recent section keeps its own newest-first order, so the value does not reorder this listing. | [optional] [example: DateAndTime] |
| sortOrder | query | SortOrder | The direction in which the sortBy field is ordered. It is saved together with sortBy as the default order of the account. The Recent section keeps its own newest-first order, so the value does not reorder this listing. | [optional] [example: 1] [enum: 0, 1] |
| filterValue | query | String | The search string the history is filtered by: it is matched as a substring of file titles and against the indexed document content as well. Omit it to list the whole history. | [optional] [example: My Document] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The Recent section with one page of the files the caller opened lately | FolderContentIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to read the Recent section | - | - |
| 404 | The Recent section could not be resolved for this account | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getReportFolderHistory
DocumentBuilderTaskWrapper getReportFolderHistory(folderId)
GET /api/2.0/files/folder/{folderId}/log/report
Get the folder history report generation status
Reports how far the history report of a folder has got, and is the operation to poll after POST api/2.0/files/folder/{folderId}/log/report has queued one. percentage climbs to 100, isCompleted turns true when the job is over however it ended, error carries the reason when it failed, and resultFileId, resultFileName and resultFileUrl name the file that was saved in the caller's My documents - a CSV report leaving the identifier empty. An empty answer means there is no report for this folder and caller, either because none was started or because a finished one has already been picked up by an earlier poll. The caller needs read access to the folder and may not be a guest, and the portal plan has to include the audit feature; a caller who fails the access rule is answered with 403 and a folder that does not exist with 404. The call is read-only, and each caller sees only their own report.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder whose history report is being polled. It is the folder that was passed to the operation that started the report. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the report task, or nothing when there is none | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not export the history of this folder | - | - |
| 404 | The folder does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRootFolders
FolderContentIntegerArrayWrapper getRootFolders(userIdOrGroupId, filterType, withoutTrash, count, startIndex, sortBy, sortOrder, filterValue)
GET /api/2.0/files/@root
Get filtered sections
Returns every top-level section the calling account can see in one response, each of them a full section object carrying its own first page of content: Favorites, Recent, Shared with me, My documents, Trash, Rooms, Forms, Archive and, while AI access is enabled for the portal, AI agents. A section is left out when the account has none of it, which is why a guest gets no personal section, and Recent is listed only while it is switched on with PUT api/2.0/files/displayrecent. Pass withoutTrash=true to drop the Trash section. The filters, count and startIndex are applied to each section separately, so count=1 returns one entry per section and every section reports its own total. Because it builds the content of all of them, this is the most expensive listing in the module: when a single section is enough, read it directly, for example with GET api/2.0/files/@my. The call modifies nothing in the sections and leaves their new-item badges untouched, though passing sortBy saves the requested order as the default order for this account.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userIdOrGroupId | query | UUID (uuid) | Restricts the listing to the entries authored by this portal member, or by the members of this group; the same parameter accepts either kind of identifier. Omit it to list everything the caller can read. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| filterType | query | FilterType | Narrows the content listed inside every returned section to a single kind of entry, such as documents, images or one type of room. Omit it to list every kind the sections hold. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 22, 23, 24, 25, 26] |
| withoutTrash | query | Boolean | Set it to true to leave the Trash section out of the returned set of sections; with false, or when the parameter is omitted, the section is returned whenever the account has one of its own. | [optional] [example: false] |
| count | query | Integer (int32) | The size of the content page returned for each section separately, so a value of 1 yields one entry per section rather than one entry in total. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | The number of matching entries skipped in each section before its page begins; add count to it to ask for the next page of every section. | [optional] [example: 0] |
| sortBy | query | String | The name of the field the entries are ordered by, matched case-insensitively against the file sort fields: DateAndTime, AZ, Size, Author, Type, New, DateAndTimeCreation, RoomType, Tags, Room, CustomOrder, LastOpened and UsedSpace. A recognized value is also saved as the default order of the account and reused by later listings that omit the parameter, while a value matching none of the fields leaves that saved order in place. | [optional] [example: DateAndTime] |
| sortOrder | query | SortOrder | The direction in which the sortBy field is ordered. It is saved together with sortBy as the default order of the account. | [optional] [example: 1] [enum: 0, 1] |
| filterValue | query | String | The search string the content of every section is filtered by: it is matched as a substring of entry titles and, for files, against the indexed document content as well. Omit it to list the sections unfiltered. | [optional] [example: My Document] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The sections available to the caller, each with one page of its content | FolderContentIntegerArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to read one of the sections | - | - |
| 404 | One of the sections could not be resolved for this account | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
FolderContentIntegerArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTrashFolder
FolderContentIntegerWrapper getTrashFolder(userIdOrGroupId, filterType, applyFilterOption, count, startIndex, sortBy, sortOrder, filterValue)
GET /api/2.0/files/@trash
Get the Trash section
Returns the caller's Trash section: the files and folders this account has deleted, kept there until they are restored or discarded. Each member has a Trash of their own and sees only what they deleted themselves. Restore an entry by moving it back with PUT api/2.0/files/fileops/move, or discard the whole section with PUT api/2.0/files/fileops/emptytrash; both start a background operation that is polled through GET api/2.0/files/fileops. This call itself modifies nothing, though passing sortBy saves the requested order as the default order for this account. Only the top level of the section is listed, so the contents of a deleted folder are not expanded into it, and filterValue is matched against titles alone here rather than against document content. folders and files hold one page of the result, total counts everything that matches before count and startIndex are applied, and current describes the section folder. An account that is given no Trash of its own, an outsider for instance, receives 404.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userIdOrGroupId | query | UUID (uuid) | Restricts the listing to the entries authored by this portal member, or by the members of this group; the same parameter accepts either kind of identifier. Omit it to list everything the caller can read. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| filterType | query | FilterType | Narrows the listing to a single kind of entry, such as documents, images or one type of room. Omit it to list every kind the section holds. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 22, 23, 24, 25, 26] |
| applyFilterOption | query | ApplyFilterOption | Chooses which half of the listing filterType and filterValue are applied to: with Files the folders come back unfiltered, with Folders the files do, and with All both halves are filtered. | [optional] [example: 1] [enum: 0, 1, 2] |
| count | query | Integer (int32) | The size of one page of section content. Pair it with startIndex to walk the listing, and compare the two with total in the response to see when the last page has been read. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | The number of matching entries to skip before the returned page begins; add count to it to ask for the next page. | [optional] [example: 0] |
| sortBy | query | String | The name of the field the entries are ordered by, matched case-insensitively against the file sort fields: DateAndTime, AZ, Size, Author, Type, New, DateAndTimeCreation, RoomType, Tags, Room, CustomOrder, LastOpened and UsedSpace. A recognized value is also saved as the default order of the account and reused by later listings that omit the parameter, while a value matching none of the fields leaves that saved order in place. | [optional] [example: DateAndTime] |
| sortOrder | query | SortOrder | The direction in which the sortBy field is ordered. It is saved together with sortBy as the default order of the account. | [optional] [example: 1] [enum: 0, 1] |
| filterValue | query | String | The search string the section is filtered by, matched as a substring of entry titles. Omit it to list the section unfiltered. | [optional] [example: My Document] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The Trash section with one page of the entries the caller deleted | FolderContentIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to read the Trash section | - | - |
| 404 | This account has no Trash section | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
insertFile
FileIntegerWrapper insertFile(folderId, InsertFile.File, InsertFile.Title, InsertFile.CreateNewIfExist, InsertFile.KeepConvertStatus, InsertFile.Stream.CanRead, InsertFile.Stream.CanWrite, InsertFile.Stream.CanSeek, InsertFile.Stream.CanTimeout, InsertFile.Stream.Length, InsertFile.Stream.Position, InsertFile.Stream.ReadTimeout, InsertFile.Stream.WriteTimeout)
POST /api/2.0/files/{folderId}/insert
Insert a file
Stores a file in the folder named by the path in a single request, taking its name from title rather than from the uploaded part, which is what separates it from POST api/2.0/files/{folderId}/upload. The content may arrive either as a multipart part or as the raw request body. The name is stripped of characters a title cannot hold and truncated, and createNewIfExist settles the clash: false adds a new version to the file that already carries the name, true keeps both by giving the new one a numeric suffix. The caller needs the right to add content to the folder, so a reader, an editor and a guest get 403, a section root and an archived room are refused as well, and an unknown folder gives 404. Formats the portal converts are converted afterwards in the background; pass keepConvertStatus to keep the outcome readable through GET api/2.0/files/file/{fileId}/checkconversion. The answer is the stored file. A large payload belongs in a chunked session instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder that receives the file; take the id from a listing such as GET api/2.0/files/@root. A room or an ordinary folder inside one is accepted, a section root is not. | [required] [example: 1] |
| InsertFile.File | form | File (binary) | The content to store, sent as a multipart/form-data part. The same content may instead be sent as the raw request body, which is what a client that cannot build a form does; when both are present the form part wins. | [optional] |
| InsertFile.Title | form | String | The name to store the file under, extension included. It wins over the name of the uploaded part, which is the reason to choose this operation over the plain upload, and it is the only name available when the content arrives as a raw body. Characters a title cannot hold are replaced with underscores and the name is cut to 170 characters before the file is stored. | [optional] |
| InsertFile.CreateNewIfExist | form | Boolean | Settles the clash with a file already carrying that title: left out, the content is written as the next version of that file; set to true, both survive and the new one gets a numeric suffix in its title. | [optional] |
| InsertFile.KeepConvertStatus | form | Boolean | Decides whether the outcome of the background conversion outlives the conversion itself. True keeps the queue record, so GET api/2.0/files/file/{fileId}/checkconversion can still report the result or the error; left out, the record is cleared the moment the conversion ends and that call finds nothing. | [optional] |
| InsertFile.Stream.CanRead | form | Boolean | [optional] | |
| InsertFile.Stream.CanWrite | form | Boolean | [optional] | |
| InsertFile.Stream.CanSeek | form | Boolean | [optional] | |
| InsertFile.Stream.CanTimeout | form | Boolean | [optional] | |
| InsertFile.Stream.Length | form | Long (int64) | [optional] | |
| InsertFile.Stream.Position | form | Long (int64) | [optional] | |
| InsertFile.Stream.ReadTimeout | form | Integer (int32) | [optional] | |
| InsertFile.Stream.WriteTimeout | form | Integer (int32) | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The stored file | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot add content to this folder | - | - |
| 404 | No folder with the specified ID | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
insertFileToMyFromBody
FileIntegerWrapper insertFileToMyFromBody(File, Title, CreateNewIfExist, KeepConvertStatus, Stream.CanRead, Stream.CanWrite, Stream.CanSeek, Stream.CanTimeout, Stream.Length, Stream.Position, Stream.ReadTimeout, Stream.WriteTimeout)
POST /api/2.0/files/@my/insert
Insert a file into My documents
Stores one file in the caller's own My documents section, the personal storage every portal member has, and returns the stored file. The destination takes no identifier: it is resolved from the calling account and created on first use, while a guest account has none and is answered as missing (404). Send the content as a multipart/form-data part or as the raw request body, and name it with title, which wins over the name of the uploaded part and has invalid characters replaced before storing. The call is not idempotent: by default a file of the same title is overwritten as a new version, while createNewIfExist=true stores a separate copy under a title made unique with a numeric suffix; a title held by a file that is locked or open in the editor cannot be overwritten either, and a second file appears under the same title. Formats listed in extsMustConvert of GET api/2.0/files/settings are converted after the response is sent; keepConvertStatus=true keeps that result readable through GET api/2.0/files/file/{fileId}/checkconversion, which otherwise drops it. Files over the single-request size limit or the account's storage quota are refused: send those through POST api/2.0/files/{folderId}/upload/create_session, and use POST api/2.0/files/{folderId}/insert for any other destination.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| File | form | File (binary) | The content to store, sent as a multipart/form-data part. The same content may instead be sent as the raw request body, which is what a client that cannot build a form does; when both are present the form part wins. | [optional] |
| Title | form | String | The name to store the file under, extension included. It wins over the name of the uploaded part, which is the reason to choose this operation over the plain upload, and it is the only name available when the content arrives as a raw body. Characters a title cannot hold are replaced with underscores and the name is cut to 170 characters before the file is stored. | [optional] |
| CreateNewIfExist | form | Boolean | Settles the clash with a file already carrying that title: left out, the content is written as the next version of that file; set to true, both survive and the new one gets a numeric suffix in its title. | [optional] |
| KeepConvertStatus | form | Boolean | Decides whether the outcome of the background conversion outlives the conversion itself. True keeps the queue record, so GET api/2.0/files/file/{fileId}/checkconversion can still report the result or the error; left out, the record is cleared the moment the conversion ends and that call finds nothing. | [optional] |
| Stream.CanRead | form | Boolean | [optional] | |
| Stream.CanWrite | form | Boolean | [optional] | |
| Stream.CanSeek | form | Boolean | [optional] | |
| Stream.CanTimeout | form | Boolean | [optional] | |
| Stream.Length | form | Long (int64) | [optional] | |
| Stream.Position | form | Long (int64) | [optional] | |
| Stream.ReadTimeout | form | Integer (int32) | [optional] | |
| Stream.WriteTimeout | form | Integer (int32) | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The stored file, with the identifier, version and title it was saved under | FileIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Creating a file in the personal section is not allowed for this account | - | - |
| 404 | The caller has no personal section, so there is nothing to store the file in | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
renameFolder
FolderIntegerWrapper renameFolder(folderId, CreateFolder)
PUT /api/2.0/files/folder/{folderId}
Rename a folder
Gives a folder a new title and answers with the folder as it now stands. The title is trimmed, may not be blank and is refused when it is longer than the limit the schema prints; a title that matches the current one leaves the folder untouched, and titles need not be unique among the neighbours. The caller needs the right to rename the folder, which the room manager, a content creator acting on a folder of their own and the owner of a personal section have, while a guest is refused with 403 whatever their access; a folder in the Trash section or in an archived room cannot be renamed either, and a folder that does not exist is answered as not found. A room may be renamed here as well, in which case the caller needs the right to edit the room, and PUT api/2.0/files/rooms/{id} is the operation that changes its other settings. The call is mutating and idempotent; on a folder stored in a connected third-party account the identifier of the folder may change with the title.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the request is addressed to: when a folder is created it is the parent that receives the new folder, and when a folder is renamed it is the folder that gets the new title. | [required] [example: 1] |
| CreateFolder | body | CreateFolder | The title carried by the request body. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The folder with its new title | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not rename this folder | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setFolderOrder
FolderIntegerWrapper setFolderOrder(folderId, OrderRequestDto)
PUT /api/2.0/files/folder/{folderId}/order
Set folder order
Puts a folder at a given position among the entries of its parent and answers with the folder, its order reporting where it now stands. Positions count from 1, and the entry that held the wanted position, together with everything after it, is shifted to make room, so the numbering of the parent stays without gaps; a position beyond the end places the folder last. The value may also be sent as a dotted path, as in 1.2.3, in which case only its last segment is read. Ordering is what the manual arrangement of a room is built on, and it only means something in rooms whose contents are indexed - elsewhere the value is stored and ignored. The caller needs edit access to the folder, which room managers and content creators have, and a member without it is refused, while a folder that does not exist is answered as not found. The call is mutating and idempotent. To move several entries in one go use PUT api/2.0/files/order.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder to move. | [required] [example: 1] |
| OrderRequestDto | body | OrderRequestDto | The position the folder is to take. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The folder with the position it now holds | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setFolderPrimaryExternalLink
FileShareWrapper setFolderPrimaryExternalLink(id, FolderLinkRequest)
PUT /api/2.0/files/folder/{id}/links
Set the folder external link
Creates an external link to a folder or a room, or changes or revokes an existing one, and answers with the link as it now stands. linkId decides which: an identifier that is not yet in use, the empty one included, creates a link, while the identifier of an existing link rewrites it, so the whole set of parameters is applied every time and a field left out is reset rather than kept. access carries the rights the link grants, and access set to the value that denies everything revokes the link instead - the answer is then empty, and a revoked primary link is not recreated by a later read. title names the link for the people who manage it, expirationDate limits its lifetime and is ignored when it lies in the past, password asks visitors for a secret, denyDownload leaves them with viewing only, internal admits signed-in members alone, and primary=true makes it the primary link of the folder. The caller needs the right to manage the links of the room, which its manager and a portal administrator acting as room manager have; anyone else is refused and an unknown folder is answered as not found. The call is mutating.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The folder or room the link belongs to. | [required] [example: 1] |
| FolderLinkRequest | body | FolderLinkRequest | The link and the way it is to be shaped. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The link as it now stands, or nothing when it was revoked | FileShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
terminateReportFolderHistory
terminateReportFolderHistory(folderId)
DELETE /api/2.0/files/folder/{folderId}/log/report
Terminate the folder history report generation
Gives up the history report the caller has started for a folder with POST api/2.0/files/folder/{folderId}/log/report. The request only asks the background worker to stop, and the answer carries no body, so a following GET api/2.0/files/folder/{folderId}/log/report is what shows the task ending as cancelled. Asking to terminate when nothing is running is accepted and changes nothing, which makes the call safe to repeat. A report that has already finished is not undone by this call and its file stays in My documents. The caller needs read access to the folder and may not be a guest, and the portal plan has to include the audit feature; a caller who fails the access rule is answered with 403 and a folder that does not exist with 404. Each caller can only terminate their own report.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder whose running history report is to be given up. It is the folder that was passed to the operation that started the report. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The request to stop the report was accepted | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not export the history of this folder | - | - |
| 404 | The folder does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
uploadFile
FileIntegerArrayWrapper uploadFile(folderId, createNewIfExist, storeOriginalFile, keepConvertStatus, File)
POST /api/2.0/files/{folderId}/upload
Upload a file
Stores a file in the folder named by the path in a single multipart request, taking its name from the uploaded part; use POST api/2.0/files/{folderId}/insert when the name has to be given separately or the content is sent as a raw body. The answer is a list that always holds exactly one file. createNewIfExist settles the clash: false adds a new version to the file that already carries the name, true keeps both by giving the new one a numeric suffix. storeOriginalFile reaches further than this call, because it saves the setting on the calling account, the same one PUT api/2.0/files/storeoriginal writes, and it stays in force for later uploads. The caller needs the right to add content to the folder, so a reader, an editor and a guest get 403, a section root and an archived room are refused as well, and an unknown folder gives 404. A request without a file is rejected as invalid, and a payload above the portal upload limit is refused.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder that receives the file; take the id from a listing such as GET api/2.0/files/@root. A room or an ordinary folder inside one is accepted, a section root is not. | [required] [example: 1] |
| createNewIfExist | query | Boolean | Settles the clash with a file already carrying that title: left out, the content is written as the next version of that file; set to true, both survive and the new one gets a numeric suffix in its title. | [optional] [example: true] |
| storeOriginalFile | query | Boolean | Reaches further than this request: it writes a setting on the calling account, the same one PUT api/2.0/files/storeoriginal writes, and it stays in force for later uploads. True keeps both the uploaded file and the copy the portal converts it into, false replaces the uploaded file with the converted one, and leaving it out keeps whatever the account already has. | [optional] [example: true] |
| keepConvertStatus | query | Boolean | Decides whether the outcome of the background conversion outlives the conversion itself. True keeps the queue record, so GET api/2.0/files/file/{fileId}/checkconversion can still report the result or the error; left out, the record is cleared the moment the conversion ends and that call finds nothing. | [optional] [example: true] |
| File | form | File (binary) | The content to store, sent as a multipart/form-data part; the name of that part becomes the title of the stored file, with characters a title cannot hold replaced and the name cut to 170 characters. A request without it is rejected as invalid. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The stored file, as a list with one element | FileIntegerArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot add content to this folder | - | - |
| 404 | No folder with the specified ID | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
uploadFileToMy
FileIntegerArrayWrapper uploadFileToMy(createNewIfExist, storeOriginalFile, keepConvertStatus, File)
POST /api/2.0/files/@my/upload
Upload a file to My documents
Uploads one file into the caller's own My documents section and returns it inside a single-element array; one request stores exactly one file. The destination takes no identifier: it is resolved from the calling account and created on first use, while a guest account has none and is answered as missing (404). The body has to be multipart/form-data carrying the file part; a request without it is rejected as invalid, and the stored name comes from that part, since unlike POST api/2.0/files/@my/insert there is no separate title. The call is not idempotent: by default a file of the same title is overwritten as a new version, while createNewIfExist=true stores a separate copy under a title made unique with a numeric suffix. storeOriginalFile is not a per-request switch: it writes the same account setting as PUT api/2.0/files/storeoriginal, which decides what happens to the formats listed in extsMustConvert of GET api/2.0/files/settings when they are converted after the response - false replaces the uploaded file with the converted one, true keeps both; keepConvertStatus=true keeps that conversion result readable through GET api/2.0/files/file/{fileId}/checkconversion. Files over the single-request size limit or the account's storage quota are refused; send those through POST api/2.0/files/{folderId}/upload/create_session.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| createNewIfExist | query | Boolean | Settles the clash with a file already carrying that title: left out, the content is written as the next version of that file; set to true, both survive and the new one gets a numeric suffix in its title. | [optional] [example: true] |
| storeOriginalFile | query | Boolean | Reaches further than this request: it writes a setting on the calling account, the same one PUT api/2.0/files/storeoriginal writes, and it stays in force for later uploads. True keeps both the uploaded file and the copy the portal converts it into, false replaces the uploaded file with the converted one, and leaving it out keeps whatever the account already has. | [optional] [example: true] |
| keepConvertStatus | query | Boolean | Decides whether the outcome of the background conversion outlives the conversion itself. True keeps the queue record, so GET api/2.0/files/file/{fileId}/checkconversion can still report the result or the error; left out, the record is cleared the moment the conversion ends and that call finds nothing. | [optional] [example: true] |
| File | form | File (binary) | The content to store, sent as a multipart/form-data part; the name of that part becomes the title of the stored file, with characters a title cannot hold replaced and the name cut to 170 characters. A request without it is rejected as invalid. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | An array holding the single uploaded file | FileIntegerArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Uploading a file to the personal section is not allowed for this account | - | - |
| 404 | The caller has no personal section, so there is nothing to store the file in | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
FilesOperationsApi
abortUploadSession
abortUploadSession(sessionId, folderId)
DELETE /api/2.0/files/{folderId}/session/{sessionId}
Abort an upload session
Cancels a chunked upload opened with POST api/2.0/files/{folderId}/session and discards the parts already received, so nothing of it reaches the folder. The session is found by the id in the path alone: the folder segment is not matched against it, and neither is the account that opened it, which makes the id the only secret protecting the transfer. The call is destructive and is not safe to repeat, because the record is gone afterwards: a second attempt, a session already closed by PUT api/2.0/files/{folderId}/session/{sessionId}/finalize and a session that expired after twelve hours of silence all fail rather than answer as missing. Finalizing removes the session too, so there is nothing left to abort once the file exists. The answer carries no body. An upload that is simply abandoned needs no call at all, since the session and its buffered parts are dropped when it expires.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| sessionId | path | String | The session to cancel, as returned in id when it was created: a 32-character hexadecimal string that identifies the session on its own. | [required] [example: 9f1c7a2b4d3e4f5a8b6c0d1e2f3a4b5c] |
| folderId | path | Integer (int32) | The folder the session was opened against. It is part of the route only and is not matched against the session, which is found by its own id. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The session and the parts received so far have been discarded | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
addFavorites
BooleanWrapper addFavorites(BaseBatchRequestDto)
POST /api/2.0/files/favorites
Add favorite files and folders
Marks the listed files and folders as favorites for the calling account. The favorite list is personal: nothing changes for other members, and the entries stay where they are stored. Read access to each item is enough, so a room member with view-only rights and a guest may call it. Items the caller cannot read, ids that do not exist and encrypted files of a private room are skipped without a word, and the answer is true even when nothing was marked, so read the outcome back from GET api/2.0/files/@favorites instead of trusting it. Numeric ids address entries stored in the portal itself, string ids entries on a connected third-party account, and both kinds may be sent in one request. The call is mutating but safe to repeat: an item already marked stays listed once. An entry moved to the Trash keeps its mark and is left out of the listing until it is restored. returnSingleOperation arrives with the shared body and does nothing here. Use DELETE api/2.0/files/favorites to undo, or GET api/2.0/files/favorites/{fileId} for a single file.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BaseBatchRequestDto | body | BaseBatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true: the request was understood, which does not mean that anything was marked | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Marking favorites is refused for the caller | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
bulkDownload
FileOperationArrayWrapper bulkDownload(DownloadRequestDto)
PUT /api/2.0/files/fileops/bulkdownload
Bulk download
Queues a background job that packs the requested files and folders into a single archive, and answers with the caller's download operations, including the one just started. The archive is not ready when the response arrives: poll GET api/2.0/files/fileops until the operation reports finished, then take the address of the archive from its url. Items listed in fileConvertIds are converted to the format named there before they are packed, while the items of fileIds are packed as they are. Read access to every listed item is required: an item the caller may not read fails the whole call with 403, and an id that resolves to nothing is answered as missing, so filter the selection beforehand. Only one download at a time is allowed per caller, and a second call made while the first is still running is refused with 403 as well. An empty selection queues nothing and simply answers with the operations that are already there. An anonymous caller may use the call for the items covered by the external link they hold.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DownloadRequestDto | body | DownloadRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The download operations of the caller, the one just queued included | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | An item in the selection cannot be read by the caller, or another download of theirs is still running | - | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
checkConversionStatus
ConversationResultArrayWrapper checkConversionStatus(fileId, start)
GET /api/2.0/files/file/{fileId}/checkconversion
Get conversion status
Reports how far the conversion of a file has got, as a list that holds one entry while the portal still knows about that conversion and nothing once it is over. Read progress, which counts from 0 to 100, error for the reason a conversion failed, and file, which carries the converted file as soon as it exists. Queue the conversion with PUT api/2.0/files/file/{fileId}/checkconversion and poll this operation until the entry reaches 100 or disappears: a finished entry is handed out once and then dropped, and an entry whose conversion stopped is discarded a few minutes later, so an empty list means either already reported or never started rather than an error. The same empty list is the answer for an identifier no file matches. Passing start=true starts the conversion as well, with the format from the portal settings and no password, which makes that one flag mutating; without it the operation is read-only. The caller needs read access to the file, and anyone else is refused.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose conversion is asked about. | [required] [example: 1] |
| start | query | Boolean | Whether to start the conversion as well: true queues it with the default output format and no password, false only reports what the portal already knows. | [optional] [example: false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The conversion entry of the file, or an empty list when the portal has none | ConversationResultArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
ConversationResultArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
checkMoveOrCopyBatchItems
FileEntryBaseArrayWrapper checkMoveOrCopyBatchItems(inDto)
GET /api/2.0/files/fileops/move
Check move or copy conflicts
Reports which of the requested files and folders already have a same-named entry in destFolderId, so that the clash can be settled before the move or the copy is started. Nothing is moved, copied or changed by the call, although the address is shared with PUT api/2.0/files/fileops/move: the answer is the part of the request that clashes, and an empty array means the batch would go through without one. The conflictResolveType of the request is not taken into account — clashing items are reported whatever it says — and encrypted files are left out of the report. A source id that resolves to nothing is not an error and is passed over. The caller needs create access to the destination: an archived room and a room the caller cannot write to are refused with 403, a destination that does not exist is answered as missing, and a request without destFolderId is rejected as an invalid request. To learn whether the destination accepts the files at all use GET api/2.0/files/fileops/checkdestfolder.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| inDto | query | BatchRequestDto | The files and folders to move or copy, the folder they go to, and the way name clashes are settled. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The listed items that already have a same-named entry in the destination folder | FileEntryBaseArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot create items in the destination folder | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
checkMoveOrCopyDestFolder
CheckDestFolderWrapper checkMoveOrCopyDestFolder(inDto)
GET /api/2.0/files/fileops/checkdestfolder
Check the destination folder
Reports whether the destination folder accepts the listed files, before a move or a copy is started. Only fileIds and destFolderId are read from the request: result says whether all of the files are accepted, only some of them or none, and files names the ones that are. The check is about what the destination allows to be stored in it rather than about name clashes — everywhere except a form-filling room every file is accepted, while a form-filling room accepts only PDF forms, so a text document offered to one comes back as none accepted. The caller needs create access to the destination, so a room the caller cannot write to and an archived room are refused with 403, a destination that does not exist is answered as missing, and a request without destFolderId is rejected as an invalid request. Folder ids and the copying options of the request play no part here. The call changes nothing; for same-named entries at the destination use GET api/2.0/files/fileops/move.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| inDto | query | BatchRequestDto | The files and folders to move or copy, the folder they go to, and the way name clashes are settled. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Whether the destination accepts all of the listed files, some of them or none, and which ones it accepts | CheckDestFolderWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot create items in the destination folder | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
copyBatchItems
FileOperationArrayWrapper copyBatchItems(BatchRequestDto)
PUT /api/2.0/files/fileops/copy
Copy files and folders
Queues a background job that copies the requested files and folders into destFolderId, leaving the originals where they are, and answers with the caller's move and copy operations, including the one just started. Poll GET api/2.0/files/fileops until the operation reports finished; its files and folders then name what was produced. Before starting, GET api/2.0/files/fileops/move reports which items already have a same-named entry at the destination and conflictResolveType decides what happens to them, while GET api/2.0/files/fileops/checkdestfolder reports whether the destination accepts the files at all. The caller needs create access to the destination — room manager or content-creator rights inside a room — and read access to every source item; anything less is refused with 403. With content=true each listed folder is replaced by its own files and subfolders, so the folder itself is not recreated at the destination. An empty selection queues nothing and answers with the operations that are already there. To remove the originals instead use PUT api/2.0/files/fileops/move.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BatchRequestDto | body | BatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The move and copy operations of the caller, the one just queued included | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot create items in the destination folder, or cannot read one of the listed items | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createUploadSession
ChunkedUploadSessionResponseWrapperIntegerWrapper createUploadSession(folderId, SessionRequest)
POST /api/2.0/files/{folderId}/upload/create_session
Chunked upload
Deprecated in favour of POST api/2.0/files/{folderId}/session, which opens the same session and returns it without the success envelope used here; new callers should go there. Reserves a chunked upload of a file in the folder named by the path: the title comes from fileName, the declared payload size from fileSize, and the answer carries the session id every later call quotes, the address of the standalone chunk handler, the moment an idle session is dropped and the reserved byte count. No content is stored yet. Send the payload as multipart parts to POST api/2.0/files/{folderId}/session/{sessionId}/upload, keeping each part within chunkUploadSize from GET api/2.0/files/settings, then close the session with PUT api/2.0/files/{folderId}/session/{sessionId}/finalize. The caller needs the right to add content to the target folder, which room managers and content creators have and readers, editors and guests do not: they get 403, as does a section root such as Rooms or Archive, while an unknown folder is answered as missing. A payload above the portal limit for chunked uploads is refused before the session exists.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder that receives the file; take the id from a listing such as GET api/2.0/files/@root. A room or an ordinary folder inside one is accepted, a section root is not. | [required] [example: 1] |
| SessionRequest | body | SessionRequest | The file the session is opened for, and how a clash with an existing name is settled. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created session, wrapped in the success envelope | ChunkedUploadSessionResponseWrapperIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot add content to the target folder | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
ChunkedUploadSessionResponseWrapperIntegerWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createUploadSessionInFolder
ChunkedUploadSessionResponseIntegerWrapper createUploadSessionInFolder(folderId, SessionRequest)
POST /api/2.0/files/{folderId}/session
Create an upload session
Opens a chunked upload session for a file in the folder named by the path and returns the session itself, which is the difference from the deprecated POST api/2.0/files/{folderId}/upload/create_session and its success envelope. The answer gives id, quoted by every later call, location for the standalone chunk handler used by clients that bypass this API, expired, and bytes_total echoing the reserved size. Whether parts are really needed follows from fileSize: below chunkUploadSize from GET api/2.0/files/settings the whole payload goes in one POST api/2.0/files/{folderId}/session/{sessionId}, which stores the file and answers 201, and above it the parts go one by one to POST api/2.0/files/{folderId}/session/{sessionId}/upload and the file appears only after PUT api/2.0/files/{folderId}/session/{sessionId}/finalize. The caller must be allowed to add content to the folder, so readers, editors and guests are refused, a section root is refused as well, and an unknown folder is answered as missing. Nothing is written until the parts arrive, and an abandoned session disappears twelve hours later.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder that receives the file; take the id from a listing such as GET api/2.0/files/@root. A room or an ordinary folder inside one is accepted, a section root is not. | [required] [example: 1] |
| SessionRequest | body | SessionRequest | The file the session is opened for, and how a clash with an existing name is settled. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created upload session | ChunkedUploadSessionResponseIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
ChunkedUploadSessionResponseIntegerWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteBatchItems
FileOperationArrayWrapper deleteBatchItems(DeleteBatchRequestDto)
PUT /api/2.0/files/fileops/delete
Delete files and folders
Queues a background job that deletes the requested files and folders, and answers with the caller's delete operations, including the one just started. Poll GET api/2.0/files/fileops until the operation reports finished, and read its error: a failure on a single item is reported there rather than as a status code. With immediately=false the items are moved to the caller's Trash and can be restored from it, while immediately=true removes them at once and for good; deleting a folder takes everything inside it either way. The call is destructive and it is not a no-op on repetition — a second call with the same ids deletes whatever has been restored in the meantime. Access is checked before the job is queued: deleting from a room requires room manager or content-creator rights, editing or read rights are refused with 403, and an id that resolves to nothing is answered as missing. An empty selection queues nothing and answers with the operations that are already there. To clear the Trash itself use PUT api/2.0/files/fileops/emptytrash.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DeleteBatchRequestDto | body | DeleteBatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The delete operations of the caller, the one just queued included | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller does not have the rights to delete one of the listed items | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteFavoritesFromBody
BooleanWrapper deleteFavoritesFromBody(BaseBatchRequestDto)
DELETE /api/2.0/files/favorites
Delete favorite files and folders
Removes the favorite mark from the listed files and folders for the calling account. Nothing is deleted from storage: the entries keep their place, their content and their sharing, and only disappear from GET api/2.0/files/@favorites; to delete the entries themselves call PUT api/2.0/files/fileops/delete instead. Marks of other members are untouched, and read access to each item is enough to call it. The ids go into the JSON body documented here; the same route also accepts them as repeated fileIds and folderIds query parameters, but only in a request that carries no JSON body at all. Numeric ids address entries stored in the portal itself, string ids entries on a connected third-party account. The answer is true whenever the request was understood, which an empty request, an id that does not exist and an item that was never marked all achieve, so it does not report how many marks were dropped. returnSingleOperation arrives with the shared body and does nothing here. Repeating the call is safe. Use POST api/2.0/files/favorites to mark entries again.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BaseBatchRequestDto | body | BaseBatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true: the marks named in the request are gone or were never there | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteFileVersions
FileOperationArrayWrapper deleteFileVersions(DeleteVersionBatchRequestDto)
PUT /api/2.0/files/fileops/deleteversion
Delete file versions
Queues a background job that removes the listed versions from the history of one file, and answers with the caller's delete operations, including the one just started. Poll GET api/2.0/files/fileops until the operation reports finished; a failure met while the job runs is reported in its error rather than as a status code. Removal is permanent — deleted versions do not travel through Trash and cannot be restored, while the file itself stays in place with the versions that are left. Send the numbers that GET api/2.0/files/file/{fileId}/history reports, and send at least one: an empty list is not an empty request, it deletes the whole file instead. The number of the current version is refused before anything is queued, while numbers that no longer exist are passed over without a complaint. The caller needs the rights that deleting the file itself would need, so a member with read-only rights is refused, as are a file in an archived room and a file that is already in Trash, and a file that does not exist is answered as missing. To delete the file itself use PUT api/2.0/files/fileops/delete.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DeleteVersionBatchRequestDto | body | DeleteVersionBatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The delete operations of the caller, the one just queued included | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
duplicateBatchItems
FileOperationArrayWrapper duplicateBatchItems(DuplicateRequestDto)
PUT /api/2.0/files/fileops/duplicate
Duplicate files and folders
Queues a background job that copies each requested file and folder next to itself, into the folder where it already is, and answers with the caller's duplicate operations, including the one just started. Poll GET api/2.0/files/fileops until the operation reports finished. The copies keep the name of the original with a numeric suffix, so nothing is overwritten and every repetition adds one more copy; duplicating a folder duplicates its content as well. No destination is taken — to place a copy somewhere else use PUT api/2.0/files/fileops/copy. The caller needs the rights that creating an item in that folder would need, which inside a room means room manager or content-creator rights: read or editing rights, and an item the caller has no access to at all, are refused with 403. An empty selection queues nothing and answers with the operations that are already there.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DuplicateRequestDto | body | DuplicateRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The duplicate operations of the caller, the one just queued included | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot create items in the folder that holds one of the listed items | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
emptyTrash
FileOperationArrayWrapper emptyTrash(Single, folderType)
PUT /api/2.0/files/fileops/emptytrash
Empty the Trash folder
Queues a background job that permanently removes the content of the caller's own Trash, and answers with the caller's delete operations, including the one just started. Poll GET api/2.0/files/fileops until the operation reports finished. Every authenticated account may empty its own Trash and only its own: no per-item access check takes place because nothing outside the caller's Trash is touched. With folderType the sweep is narrowed to the items that were originally stored in sections and rooms of the named types, so clearing what came from personal documents leaves what came from rooms untouched; without the parameter the whole Trash is emptied. What is removed here cannot be restored afterwards, which is the difference from PUT api/2.0/files/fileops/delete, where immediately=false puts items into Trash in the first place. Calling it on an already empty Trash queues nothing and answers with the operations that are already there.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| Single | query | Boolean | Which operations the answer carries: true returns the operation this call started and nothing else, false returns every delete operation that the caller has running or unread. | [optional] [example: false] |
| folderType | query | List | Limits the sweep to the items whose original location was inside a section or a room of one of the named types, leaving the rest of the Trash untouched; without the parameter the whole Trash is emptied. 5 covers what was deleted from personal documents, 14 what was deleted from rooms. | [optional] [example: [5]] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The delete operations of the caller, the one just queued included | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
finalizeSession
UploadSessionResponseIntegerWrapper finalizeSession(folderId, sessionId)
PUT /api/2.0/files/{folderId}/session/{sessionId}/finalize
Finalize an upload session
Assembles the parts received so far into the file the session was opened for and closes the session. What comes out depends on how the session started: one opened against an existing file through POST api/2.0/files/file/{fileId}/edit_session replaces that content in place and keeps the version number, while one opened against a folder either creates the file or, when a file of the same name was taken over, stores the content as its next version. A form loses its filling state on the way in. The answer arrives with 201 and carries the identifiers of the file together with the file itself. The call ends the session: the record and the buffered parts are removed, so it cannot be repeated and there is nothing left to abort afterwards. Running it before all the declared bytes have arrived assembles whatever is there, so read the progress from the chunk calls first. An unknown, already closed or expired session id fails instead of answering as missing.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the session was opened against. It is part of the route only and is not matched against the session, which is found by its own id. | [required] [example: 1] |
| sessionId | path | String | The session to assemble, as returned in id when it was created: a 32-character hexadecimal string that identifies the session on its own. | [required] [example: 9f1c7a2b4d3e4f5a8b6c0d1e2f3a4b5c] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The assembled file and the identifiers of the closed session | UploadSessionResponseIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
UploadSessionResponseIntegerWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getOperationStatuses
FileOperationArrayWrapper getOperationStatuses(id)
GET /api/2.0/files/fileops
Get active file operations
Returns the background file operations of the caller that are still running or whose finished result has not been read yet, grouped by kind: duplications first, then moves and copies, deletions, downloads and mark-as-read. This is the polling target for every operation in this section — an operation appears here as soon as it is queued and carries progress from 0 to 100, finished, the error of a failed item and, for a download, the address of the archive in url. A record is dropped once its finished state has been handed out, so a completed operation is reported once and an empty array means there is nothing left to report rather than that the work failed. Pass id to follow a single operation; an id that is not among the caller's operations gives an empty array. Operations are private to the account that started them, an anonymous caller being scoped to the session of the external link. The call changes nothing. To follow one kind only use GET api/2.0/files/fileops/{operationType}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | query | String | The operation to report on, as returned in id when it was started; without it every operation of the caller is reported. An id that is not among the caller's operations gives an empty answer rather than an error. | [optional] [example: b2f3e9a4-7c15-4d8e-9f60-3a1c5e7d0b42] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The file operations of the caller that are still running or not yet read | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getOperationStatusesByType
FileOperationArrayWrapper getOperationStatusesByType(operationType, id)
GET /api/2.0/files/fileops/{operationType}
Get file operations by type
Returns the background file operations of the caller that are of one kind, named by the number in the route: 1 for a copy, 2 for a deletion, 3 for a download, 4 for a mark-as-read and 7 for a duplication. The answer carries the same records as GET api/2.0/files/fileops, with the same rule that a finished operation is reported once and then dropped, and id narrows it further to a single operation. Moves, kind 0, cannot be read through this route: the address api/2.0/files/fileops/move belongs to another operation, so read moves from GET api/2.0/files/fileops and pick the records whose operation is 0. A kind that has no queue of its own — 5 for an import, 6 for a conversion — is accepted and answers with an empty array, while a number outside the operation type is rejected as an invalid request. The call changes nothing and never shows another account's operations.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| operationType | path | FileOperationType | The kind of operation the answer is limited to. Only the kinds that have a queue of their own ever carry records — a copy, a deletion, a download, a mark-as-read and a duplication — and moves cannot be read through this route at all, because its address belongs to another operation. | [required] [example: 2] [enum: 0, 1, 2, 3, 4, 5, 6, 7] |
| id | query | String | The operation to report on, as returned in id when it was started; without it every operation of the caller is reported. An id that is not among the caller's operations gives an empty answer rather than an error. | [optional] [example: b2f3e9a4-7c15-4d8e-9f60-3a1c5e7d0b42] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The operations of the caller that are of the requested kind | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
markAsRead
FileOperationArrayWrapper markAsRead(BaseBatchRequestDto)
PUT /api/2.0/files/fileops/markasread
Mark files and folders as read
Queues a background job that clears the new-item badge from the requested files and folders for the calling account, and answers with the caller's mark-as-read operations, including the one just started. Poll GET api/2.0/files/fileops until the operation reports finished. Marking a folder clears the badges of everything inside it as well. Items the caller cannot read are passed over in silence rather than refused, so the call succeeds even when the whole selection is inaccessible, and an empty selection queues nothing and answers with the operations that are already there. Repeating the call on items that are already read changes nothing, and nothing is opened, moved or modified by it — only the caller's own badges are affected, while other members keep theirs. To see what is currently marked as new use GET api/2.0/files/{folderId}/news for one folder and GET api/2.0/files/rooms/news for the rooms of the caller.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BaseBatchRequestDto | body | BaseBatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The mark-as-read operations of the caller, the one just queued included | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
moveBatchItems
FileOperationArrayWrapper moveBatchItems(BatchRequestDto)
PUT /api/2.0/files/fileops/move
Move files and folders
Queues a background job that moves the requested files and folders into destFolderId, removing them from where they were, and answers with the caller's move and copy operations, including the one just started. Poll GET api/2.0/files/fileops until the operation reports finished. Before starting, GET api/2.0/files/fileops/move reports which items already have a same-named entry at the destination and conflictResolveType decides what happens to them, while GET api/2.0/files/fileops/checkdestfolder reports whether the destination accepts the files at all. The caller needs create access to the destination and the right to take the items out of their source, which is why room members with editing or review rights are refused with 403, and why content-creator rights inside a room allow copying an item out of it but not moving it. A room cannot be moved this way — use PUT api/2.0/files/rooms/{id}/archive instead. To keep the originals use PUT api/2.0/files/fileops/copy. An empty selection queues nothing.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BatchRequestDto | body | BatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The move and copy operations of the caller, the one just queued included | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot create items in the destination folder, or cannot take one of the items out of its source | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
startFileConversion
ConversationResultArrayWrapper startFileConversion(fileId, CheckConversionRequestDtoInteger)
PUT /api/2.0/files/file/{fileId}/checkconversion
Start file conversion
Queues the conversion of a file into the portal's own editable format and answers with the conversion entry the caller is to poll. The whole body may be omitted, in which case the defaults apply. outputType names the target format and, left empty, the portal's default for that kind of document is used; password unlocks a protected source file; version converts an older version instead of the current one. createNewIfExist decides where the result goes: with true a new file is created beside the source, while with false, the default, the converted file that already exists is replaced. sync=true converts inside the request and answers with the finished result instead of a queue entry, which is only sensible for small documents. Otherwise poll GET api/2.0/files/file/{fileId}/checkconversion until progress reaches 100 and take the converted file from file. Only formats the portal has to convert are accepted; anything already editable, and anything it cannot convert, is answered without work being queued or rejected as an invalid request. The caller needs read access to the file. The call is mutating and not idempotent.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file to convert. | [required] [example: 1] |
| CheckConversionRequestDtoInteger | body | CheckConversionRequestDtoInteger | The parameters of the conversion. The whole body may be omitted, in which case the defaults of the portal apply. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The conversion entry to poll, or the finished result when the conversion is synchronous | ConversationResultArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
ConversationResultArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
terminateTasks
FileOperationArrayWrapper terminateTasks(id)
PUT /api/2.0/files/fileops/terminate/{id}
Cancel file operations
Cancels a background file operation of the caller and answers with the operations that are left. Pass the id that was reported when the operation started to stop that one; a call that leaves the trailing route segment out stops every operation the caller has running, of every kind. Cancelling stops the job where it stands and does not undo it: what has already been copied, moved or deleted stays that way, so a cancelled batch can leave part of itself at the destination and part of it at the source, and the result has to be read back rather than assumed. The cancelled record is dropped from GET api/2.0/files/fileops at once, which is why the answer here is usually empty. An id that is not among the caller's operations cancels nothing and is not an error. Operations are private to the account that started them, an anonymous caller being scoped to the session of the external link, so the call can never reach an operation of anyone else.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | String | The operation to cancel, as returned in id when it was started. A call that leaves the route segment out cancels every operation of the caller, and an id that is not among their operations cancels nothing without being an error. | [required] [example: b2f3e9a4-7c15-4d8e-9f60-3a1c5e7d0b42] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The operations of the caller that are left after the cancellation | FileOperationArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
updateFileComment
StringWrapper updateFileComment(fileId, UpdateComment)
PUT /api/2.0/files/file/{fileId}/comment
Update a comment
Replaces the comment stored on one version of a file - the note that explains what changed in it - and answers with the comment as it was stored, which is the text cut to the length the portal keeps. version names the version and has to be an existing one: a version that does not exist is rejected as an invalid request, while a file that does not exist at all is answered as not found. Sending an empty comment clears the note. The caller needs the right to edit the history of the file, which the room admin, a DocSpace admin acting as room manager and a member with content-creator rights have; a member with editing access to somebody else's file, read-only access, a guest and an anonymous caller are all refused. A file that is locked by somebody else or lies in Trash is refused as well. The call is mutating and idempotent - repeating it with the same text leaves the same comment. The comments of all versions come back with GET api/2.0/files/file/{fileId}/edit/history.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose version comment is replaced. | [required] [example: 1] |
| UpdateComment | body | UpdateComment | The version and the comment to store on it. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The comment as it was stored | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
uploadAsyncSession
ChunkedUploadSessionResponseIntegerWrapper uploadAsyncSession(folderId, sessionId, ChunkNumber, File)
POST /api/2.0/files/{folderId}/session/{sessionId}/upload
Upload a numbered chunk
Stores one part of a file under the number given in chunkNumber, which is what the ordinary chunked flow uses: parts are kept by their number rather than by arrival, so a part that failed can be resent under the same number without restarting the session. Numbering starts at 1, and leaving the number out makes the server count the parts itself. The answer is always the session, never the file, and this call never completes the upload: the file appears only after PUT api/2.0/files/{folderId}/session/{sessionId}/finalize. Use POST api/2.0/files/{folderId}/session/{sessionId} instead when the parts go strictly in order and the upload should complete by itself. A part bigger than chunkUploadSize from GET api/2.0/files/settings is refused, so that value is also the size to split the payload by. The first part of a PDF is inspected, and a PDF that is not a fillable form is refused when the session targets a form-filling room. The session is found by its id alone.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the session was opened against. It is part of the route only and is not matched against the session, which is found by its own id. | [required] [example: 1] |
| sessionId | path | String | The session this part belongs to, as returned in id when it was created; a 32-character hexadecimal string. | [required] [example: 9f1c7a2b4d3e4f5a8b6c0d1e2f3a4b5c] |
| ChunkNumber | query | Integer (int32) | The position of this part in the file, counted from 1. Sending the same number again replaces that part instead of adding one, which is how a failed part is retried; leaving the number out makes the server count the parts itself. | [optional] [example: 1] |
| File | form | File (binary) | The part of the file to store, sent as the multipart field of the same name. It is kept under the number given beside it, and a part larger than the portal chunk size is refused. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The session with its progress after the part was stored | ChunkedUploadSessionResponseIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
ChunkedUploadSessionResponseIntegerWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
uploadSession
UploadSessionResponseIntegerWrapper uploadSession(folderId, sessionId, File)
POST /api/2.0/files/{folderId}/session/{sessionId}
Upload the next chunk
Sends the next part of a file into the session opened for it, as the multipart File field, and lets the server keep count: parts are appended in the order they arrive, so two of these calls must never run in parallel on one session. While bytes are still missing the answer describes the session and uploaded is false; when the last part completes the declared size the file is written, its upload links are cleared, it is marked as new for the room, and the answer comes back with 201, uploaded true and the whole file in file. A session created for a payload smaller than chunkUploadSize from GET api/2.0/files/settings finishes on the first such call and needs no separate finalize step. A part larger than that limit is refused. The first part of a PDF is inspected, and a PDF that is not a fillable form is refused when the session targets a form-filling room. The session is addressed by its id, and the folder in the path is not matched against it.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder the session was opened against. It is part of the route only and is not matched against the session, which is found by its own id. | [required] [example: 1] |
| sessionId | path | String | The session this part belongs to, as returned in id when it was created; the parts of one session must be sent one after another, not in parallel. | [required] [example: 9f1c7a2b4d3e4f5a8b6c0d1e2f3a4b5c] |
| File | form | File (binary) | The next part of the file, sent as the multipart field of the same name. Parts are appended in the order they arrive, and a part larger than the portal chunk size is refused. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The progress of the session, or the stored file once the last part has arrived | UploadSessionResponseIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
UploadSessionResponseIntegerWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
FilesQuotaApi
resetRoomQuota
FolderIntegerArrayWrapper resetRoomQuota(UpdateRoomsRoomIdsRequestDtoInteger)
PUT /api/2.0/files/rooms/resetquota
Reset the room quota limit
Returns every listed room to the default room quota of the portal and streams the updated rooms back in the order they were given. This is not the same as removing the limit: the room stops carrying its own value and starts following the portal default, which a portal administrator can change at any time. The per-room quota feature has to be on, the caller must be a manager of each listed room, and an archived room or a room in the trash is refused. The list is not transactional, so rooms processed before a failing one keep the default and the rest keep what they had. Only numeric room ids are processed, which means ids of rooms stored in a connected third-party account are silently skipped. Use PUT api/2.0/files/rooms/roomquota to set an explicit value, and a quota of -1 in PUT api/2.0/files/rooms/{id} to leave the room with no custom limit at all.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| UpdateRoomsRoomIdsRequestDtoInteger | body | UpdateRoomsRoomIdsRequestDtoInteger | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The rooms as they are after the default limit was restored | FolderIntegerArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
updateRoomsQuota
FolderIntegerArrayWrapper updateRoomsQuota(UpdateRoomsQuotaRequestDtoInteger)
PUT /api/2.0/files/rooms/roomquota
Change the room quota limit
Sets the same custom storage limit, in bytes, on every listed room and streams the updated rooms back in the order they were given. The per-room quota feature has to be on for the portal, and the value must stay within the portal own limit, otherwise the call is refused before anything is written. The caller must be a manager of each listed room, and an archived room or a room in the trash is refused. The list is not transactional: rooms processed before the offending one keep their new limit, so a failed call has to be checked room by room. Only numeric room ids are processed, which means ids of rooms stored in a connected third-party account are silently skipped. A room whose limit already equals the requested value is left untouched and still returned. To go back to the portal default use PUT api/2.0/files/rooms/resetquota, and to drop the custom limit entirely send a quota of -1 to PUT api/2.0/files/rooms/{id}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| UpdateRoomsQuotaRequestDtoInteger | body | UpdateRoomsQuotaRequestDtoInteger | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The rooms as they are after the new limit was applied | FolderIntegerArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
FilesSettingsApi
changeAccessToThirdparty
BooleanWrapper changeAccessToThirdparty(SettingsRequestDto)
PUT /api/2.0/files/thirdparty
Change the third-party settings access
Turns the portal-wide permission to connect third-party storages such as Google Drive, Dropbox or Nextcloud on or off, and returns the value that is now stored. Only the portal owner and a DocSpace administrator may change it: a room administrator, a member or a guest is refused, and so is an unauthenticated caller. This is a single setting for the whole portal rather than a preference of the caller, so it changes what every account sees. While it is off, connecting an account through POST api/2.0/files/thirdparty is refused and the contents of an already connected provider folder cannot be listed; the stored connections themselves survive and work again once it is turned back on. The providers this portal can offer are listed by GET api/2.0/files/thirdparty/capabilities. The same value is published as enableThirdParty by GET api/2.0/files/settings. Sending the same value again is safe. The response is the value read back from the portal, not a success flag.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if third-party storages may be connected in this portal | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
changeAutomaticallyCleanUp
AutoCleanUpDataWrapper changeAutomaticallyCleanUp(AutoCleanupRequestDto)
PUT /api/2.0/files/settings/autocleanup
Update the trash bin auto-clearing setting
Writes the trash auto-clearing setting of the calling account and returns the pair that is now stored. Both fields are written together from the request, so a call that omits gap stores an interval outside the published list rather than keeping the previous one - always send the interval, including when set is false. While clearing is on, an item is removed from the caller's trash for good once it has been there longer than the interval, and each trashed entry reports the moment it is due to disappear in its own autoDelete field; switching clearing off stops that and leaves whatever is in the trash. The setting belongs to the calling account alone: every authenticated role down to a guest may change its own, one member's choice never affects another, and an unauthenticated caller is refused. Items already removed are not recoverable. Read the pair back with GET api/2.0/files/settings/autocleanup.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| AutoCleanupRequestDto | body | AutoCleanupRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The trash auto-clearing setting that is now stored for the caller | AutoCleanUpDataWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
changeDefaultAccessRights
FileShareResponseArrayWrapper changeDefaultAccessRights(request_body)
PUT /api/2.0/files/settings/dafaultaccessrights
Change the default access rights
Stores the access rights the sharing dialog offers the calling account by default, and returns the set that was actually stored. The body is a bare array of access-right values, not an object. The portal normalises the array instead of keeping it as sent: it keeps the fill-forms, custom-filter and review entries, then adds read-and-write or comment - whichever is present, in that order - and stops there, and it falls back to read alone when nothing else applies, so the response can be shorter than the request and its order can differ. An empty array clears the setting, after which read alone is reported. A value outside the published list is rejected as an invalid request. The set belongs to the calling account alone: every authenticated role down to a guest may store its own, and an unauthenticated caller is refused. Nothing already shared is changed. The stored set is published as defaultSharingAccessRights by GET api/2.0/files/settings.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| request_body | body | List | The access rights the sharing dialog should offer by default. The array is the whole request body rather than a field of an object, and the portal stores a normalised subset of it instead of the array as sent, so read the answer to learn what was kept. An empty array clears the setting, after which the portal reports read access alone. A value outside the published list is rejected as an invalid request. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The normalised set of default access rights stored for the caller | FileShareResponseArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
changeDeleteConfirm
BooleanWrapper changeDeleteConfirm(SettingsRequestDto)
PUT /api/2.0/files/changedeleteconfrim
Ask for delete confirmation
Stores whether the caller wants to be asked for confirmation before files and folders are deleted, and returns the value that is now stored. The setting belongs to the calling account alone: every authenticated role down to a guest may change its own copy, one member's choice never affects another, and an unauthenticated caller is refused. It is a hint for the interface, not a server-side guard: the delete operations under api/2.0/files/fileops remove whatever they are given regardless of this value, so a client that skips its own prompt loses nothing but the prompt. Pass set=true to be asked again, set=false to delete without a prompt. The same value is published as confirmDelete by GET api/2.0/files/settings, which is the only way to read it back. Repeating the call with the same value writes it again and is safe. A new account starts with the confirmation switched on, and the value says nothing about where deleted items land: they go to the trash and are cleared from there according to GET api/2.0/files/settings/autocleanup.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if the caller is asked to confirm a deletion | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
changeDownloadZip
ICompressWrapper changeDownloadZip(DisplayRequestDto)
PUT /api/2.0/files/settings/downloadtargz
Change the download archive format
Selects the archive format the portal packs the caller's multi-item downloads into: set=true switches to .tar.gz, set=false back to .zip. The choice is stored for the calling account only, so every authenticated role down to a guest may set its own, while an unauthenticated caller is refused. It takes effect on the archives built by PUT api/2.0/files/fileops/bulkdownload and by the download links that operation returns; archives already produced keep the format they were packed with. The returned archive object carries no readable fields of its own, so it cannot be used to confirm the change: read downloadTarGz from GET api/2.0/files/settings instead. Writing the same value again is safe and changes nothing else. A new account starts on .zip. The format decides only how the archive is packed: which items go into it, and the access needed to take them, are decided by the bulk-download operation itself, and a single file is downloaded as it is whatever is stored here.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DisplayRequestDto | body | DisplayRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The archive helper for the format that is now selected | ICompressWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
changeExternalSharingSettings
ExternalSharingSettingsWrapper changeExternalSharingSettings(ExternalSharingSettingsRequestDto)
PUT /api/2.0/files/settings/externalsharingsettings
Configure external sharing
Writes the portal's whole external-sharing policy in one request and returns the set that is now in force. Only the portal owner and a DocSpace administrator may call it; everyone else is refused, including an unauthenticated caller. Every field of the request is applied, so send the complete set rather than the field being changed - an omitted boolean is read as false. The portal keeps the set consistent: with externalShare false the default link type is forced to users of this portal only and sharing on social networks is turned off, and the three restriction fields only matter while external sharing is off. blockExistingLinksOnRestrict decides what happens to links that already exist, so it is the field that changes access to data already shared. The new set is pushed to the connected clients of the portal as well, and is published field by field by GET api/2.0/files/settings. Sending the same set again is safe.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| ExternalSharingSettingsRequestDto | body | ExternalSharingSettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The external sharing policy that is now in force | ExternalSharingSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
ExternalSharingSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
checkDocServiceUrl
DocServiceUrlWrapper checkDocServiceUrl(CheckDocServiceUrlRequestDto)
PUT /api/2.0/files/docservice
Set the document service address
Writes the portal-wide ONLYOFFICE Docs connection settings - the public Document Server address, its address inside the private network, the address it calls this portal back on, the request signature secret and header, and SSL verification - then verifies them against the running Document Server before keeping them. Every address is optional: an empty value drops the portal's own setting so that the deployment default takes over again. An address gets http:// prepended when it carries no scheme, while an absolute address with a query string is rejected with 400, as is a signature secret sent without its header. Only the portal owner and a DocSpace administrator may call this; a room administrator, a user and a guest are refused with 403. The call is mutating and safe to repeat with the same body. Verification is live - the editor api script, the healthcheck, a test conversion, the command service and the document builder are all exercised - and when it fails the previous settings are restored in full and nothing is changed. The answer is what GET api/2.0/files/docservice returns with no version requested, so version comes back empty and the signature secret is not echoed back.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CheckDocServiceUrlRequestDto | body | CheckDocServiceUrlRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The settings are stored and the Document Server answered the verification requests | DocServiceUrlWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | An address cannot be parsed or carries a query string, the signature secret is sent without its header, or an http address is given for a portal served over https | - | - |
| 403 | The caller is not the portal owner or a DocSpace administrator | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
displayFileExtension
BooleanWrapper displayFileExtension(SettingsRequestDto)
PUT /api/2.0/files/displayfileextension
Display a file extension
Stores whether file titles are shown to the caller with their extension, and returns the value that is now stored. It is a preference of the calling account: every authenticated role down to a guest may change its own copy, and an unauthenticated caller is refused. Only the presentation changes - the titles kept by the portal always include the extension, and the listing and file operations keep returning them in full, so a client that trims the extension for display must add it back before it renames or searches for anything. Writing a value that is already stored is accepted and leaves the setting untouched. The value is published as displayFileExtension by GET api/2.0/files/settings, which is the only way to read it back. A new account starts with extensions hidden. This governs display alone: which extensions may be uploaded, viewed or edited at all is published by the same settings operation as separate format lists.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if file titles are shown with their extension | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
displayRecent
BooleanWrapper displayRecent(DisplayRequestDto)
PUT /api/2.0/files/displayrecent
Show the Recent section
Stores whether the Recent section is offered to the calling account, and returns the value that is now stored. The setting belongs to that account alone: every authenticated role down to a guest may change its own copy, and an unauthenticated caller is refused. Hiding the section removes it from the list of section roots returned by GET api/2.0/files/@root, and the document editor stops offering the recent-files entry; the section itself keeps being maintained, and GET api/2.0/files/recent still returns its contents. Pass set=true to show it again. The same value is published as recentSection by GET api/2.0/files/settings, which is the only way to read it back. Repeating the call with the same value writes it again and is safe. A new account starts with the section shown. Hiding it neither clears the recent history nor stops it being recorded, so showing the section again brings the same entries back.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DisplayRequestDto | body | DisplayRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if the Recent section is offered to the caller | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to change this setting | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
externalShare
BooleanWrapper externalShare(DisplayRequestDto)
PUT /api/2.0/files/settings/external
Change the external sharing ability
Turns external (public) links on or off for the whole portal and returns the value that is now stored. Only the portal owner and a DocSpace administrator may change it: a room administrator, a member or a guest is refused, and so is an unauthenticated caller. Turning it off also turns sharing on social networks off, so a following read of externalShareSocialMedia reports false without a separate call. This operation sets one flag; to write the whole external-sharing policy in one request - the default link type, the sections the restriction applies to and whether existing links are blocked at once - use PUT api/2.0/files/settings/externalsharingsettings. The value is published as externalShare by GET api/2.0/files/settings. Sending the same value again is safe. The response is the value read back from the portal rather than a success flag. External links are allowed in a new portal. Turning them off does not delete the links that already exist - whether those stop working at once is decided by the blockExistingLinksOnRestrict field of the settings operation named above.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DisplayRequestDto | body | DisplayRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if external links may be created in this portal | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
externalShareSocialMedia
BooleanWrapper externalShareSocialMedia(DisplayRequestDto)
PUT /api/2.0/files/settings/externalsocialmedia
Change the external sharing ability on social networks
Turns the social-network sharing buttons on or off for the whole portal and returns the value that is now in force. Only the portal owner and a DocSpace administrator may change it; a room administrator, a member or a guest is refused, and so is an unauthenticated caller. The requested value is combined with the state of external sharing itself: while that is off, enabling this setting has no effect and the response comes back false, so turn external sharing on with PUT api/2.0/files/settings/external first and only then this one. Turning external sharing off later switches this setting off again on its own. The value is published as externalShareSocialMedia by GET api/2.0/files/settings. Sending the same value again is safe. Read the response instead of assuming the requested value was stored. The setting governs the share-to-network buttons offered next to an external link; it neither creates nor revokes links, and the links themselves keep working either way.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DisplayRequestDto | body | DisplayRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if sharing on social networks is now in force | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
forcesave
BooleanWrapper forcesave()
PUT /api/2.0/files/forcesave
Change the forcesaving ability
Reports that forcesaving is on for this portal. The operation is a stub kept for compatibility: it takes no request body, stores nothing and always answers true, so calling it neither turns forcesaving on nor off and repeating it changes nothing. Forcesaving itself - the editor writing the document back to storage while the session is still open - is on for every portal and cannot be switched off through the API. Any authenticated role down to a guest may call it; an unauthenticated caller is refused. The same constant is published as forcesave by GET api/2.0/files/settings, which is the cheaper way to read it together with the rest of the settings. A companion stub, PUT api/2.0/files/storeforcesave, answers for the storing of forcesaved versions in the same way. Nothing in this call reaches a document: to have the current state of an editing session written to storage, drive the document through the editor operations of the file itself rather than through this setting.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true: forcesaving is on for every portal | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getAutomaticallyCleanUp
AutoCleanUpDataWrapper getAutomaticallyCleanUp()
GET /api/2.0/files/settings/autocleanup
Get the trash bin auto-clearing setting
Returns the trash auto-clearing setting of the calling account: whether it is on, and after which interval an item that sits in the trash is removed for good. The setting belongs to that account alone, so every authenticated role down to a guest reads its own value and an unauthenticated caller is refused. The first call for an account is not read-only: when nothing has been stored yet the portal writes the default - clearing on, thirty days - and returns it, so the answer never comes back empty and a following call reports the same pair. The interval is the age of an entry in the trash, not a schedule; each trashed entry also reports the moment it is due to disappear in its own autoDelete field. Use PUT api/2.0/files/settings/autocleanup to change the pair, or read it together with the rest of the configuration from GET api/2.0/files/settings.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The trash auto-clearing setting of the caller: the on/off flag and the interval | AutoCleanUpDataWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getDefaultTemplates
DefaultTemplateSettingsWrapper getDefaultTemplates()
GET /api/2.0/files/settings/defaulttemplate
Get the default template setting
Returns the blank document the portal creates for each format: one entry per extension the built-in template set covers, with the file that has been chosen as the blank for it, if any. An entry whose selectedFile is null means no custom template has been set and the built-in blank is used; the remaining fields - title, size, modification moment and view address - are filled only for a custom one. The list is assembled from the portal's built-in template set on every call, so an extension the set no longer covers disappears from it. Entries come in the order the interface shows them: the text document, spreadsheet, presentation and PDF formats first, the rest by extension. Reading the setting requires the portal settings permission, so only the portal owner and a DocSpace administrator may call it. Use PUT api/2.0/files/settings/defaulttemplate to choose an existing file and the matching POST to upload one.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The blank document configured for each supported extension | DefaultTemplateSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not read the portal settings | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
DefaultTemplateSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getDocServiceUrl
DocServiceUrlWrapper getDocServiceUrl(version)
GET /api/2.0/files/docservice
Get the document service address
Reports where this portal expects ONLYOFFICE Docs to be: the public Document Server address, the URL of the editor api script and of the preload page a client loads before opening a document, the address used inside the private network, the address the Document Server calls this portal back on, the name of the request signature header, whether SSL verification is on, and whether all of it is still at the deployment default. The call is read-only and needs no authorization: an anonymous caller and every role from the portal owner down to a guest read the same values. Pass version=true to have the editor version of the running Document Server included in version; left out, version comes back empty and the portal answers without contacting the Document Server at all. A version request never fails the call - when the Document Server does not answer, a fallback version string is reported instead of an error, so the value is no proof that the server is reachable. The signature secret is not part of the answer, only the header name it travels in. To change any of these settings use PUT api/2.0/files/docservice.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| version | query | Boolean | Whether the running Document Server is asked for its editor version so that version can report it. Left off, the portal answers from its own settings without contacting the Document Server and version comes back empty. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The document service location, with the editor version filled in when it was requested | DocServiceUrlWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFilesModule
ModuleWrapper getFilesModule()
GET /api/2.0/files/info
Get the Documents module information
Returns the descriptor of the Documents module of this portal: its identifier, display title and description, the address of its start page, the icon and image addresses, the address of its help section, and whether it is the portal's primary module. It is meant for building navigation to the module, not for working with documents: nothing about files, rooms or permissions comes back, and nothing is changed by the call. The values follow the portal's own configuration and branding, so the title and the description arrive already translated for the caller. Any authenticated role down to a guest may read it; an unauthenticated caller is refused. The content is the same for everyone in the portal and changes only when the portal is reconfigured, so it can be fetched once and cached rather than requested per screen. Only the Documents module is described here; this document carries no listing of the other modules of the portal. The file-related configuration a client needs alongside it - the format tables, the editor addresses and the upload limits - comes from GET api/2.0/files/settings.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The descriptor of the Documents module: identifier, title, description, icon and start addresses | ModuleWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFilesSettings
FilesSettingsWrapper getFilesSettings()
GET /api/2.0/files/settings
Get file settings
Returns the whole Files configuration in one object: the caller's own preferences (trash auto-clearing, default sharing rights, hidden confirmation dialogs, archive format, section visibility), the portal-wide switches an administrator controls (third-party storages, external sharing), and the static tables a client needs to work with documents - which extensions can be viewed, edited, converted or uploaded, the URL templates for the viewer, editor and thumbnails, and the upload limits. This is the read side of the setting operations in this section: each of those answers with the one value it wrote, and only the trash auto-clearing and default-template settings have a GET of their own. Marked as allowing anonymous access because the external-link pages read the extension tables before signing in, but a caller with neither a session nor a valid link key is still rejected. The result is not filtered by role and is not paginated; fetch it once per session rather than before each file action.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The full set of file settings for the caller and the portal | FilesSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
hideConfirmCancelOperation
BooleanWrapper hideConfirmCancelOperation(SettingsRequestDto)
PUT /api/2.0/files/hideconfirmcanceloperation
Hide confirmation dialog when canceling operations
Stores whether the caller is asked to confirm cancelling a running file operation, and returns the value that is now stored. The setting belongs to the calling account alone: every authenticated role down to a guest may change its own copy, and an unauthenticated caller is refused. Unlike the conversion prompt of PUT api/2.0/files/hideconfirmconvert, this one works in both directions - set=true hides the confirmation, set=false brings it back. It is a hint for the interface only: cancelling an operation through the API is unaffected, and the operations themselves keep being reported by GET api/2.0/files/fileops. The value is published as hideConfirmCancelOperation by GET api/2.0/files/settings, which is the only way to read it back. Writing a value that is already stored is accepted and leaves the setting untouched. A new account starts with the confirmation shown. The prompt it hides is the one raised when a running copy, move or download is about to be abandoned, not the one raised before a deletion - that one is PUT api/2.0/files/changedeleteconfrim.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if the cancel confirmation is now hidden for the caller | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
hideConfirmConvert
BooleanWrapper hideConfirmConvert(HideConfirmConvertRequestDto)
PUT /api/2.0/files/hideconfirmconvert
Hide the confirmation dialog when converting
Hides one of the two prompts the interface shows around file conversion, for the calling account only. The save field chooses which prompt, and is not the value being written: save=true hides the prompt that offers to keep a copy in the original format when a file is converted, save=false hides the prompt that offers to open the conversion result. Both flags are one-way - the operation can only hide a prompt, and there is no API to show it again - so the answer is always true and repeating the call changes nothing. The two flags are independent: hiding one leaves the other as it was. Every authenticated role down to a guest may set its own, and an unauthenticated caller is refused. The stored flags are published as hideConfirmConvertSave and hideConfirmConvertOpen by GET api/2.0/files/settings. Conversion itself is started by PUT api/2.0/files/file/{fileId}/checkconversion and is not affected by either flag.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| HideConfirmConvertRequestDto | body | HideConfirmConvertRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true: the chosen conversion prompt is now hidden | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
hideConfirmRoomLifetime
BooleanWrapper hideConfirmRoomLifetime(SettingsRequestDto)
PUT /api/2.0/files/hideconfirmroomlifetime
Hide confirmation dialog when changing room lifetime settings
Stores whether the caller is warned before the lifetime settings of a room are changed, and returns the value that is now stored. A room lifetime moves the files of the room to the trash once they reach the configured age, which is why the interface confirms the change; this setting decides whether that confirmation is shown to the calling account. It belongs to that account alone: every authenticated role down to a guest may change its own copy, and an unauthenticated caller is refused. It works in both directions - set=true hides the warning, set=false brings it back - and is a hint for the interface only, so changing a room lifetime through PUT api/2.0/files/rooms/{id} is unaffected. The value is published as hideConfirmRoomLifetime by GET api/2.0/files/settings, which is the only way to read it back. A new account starts with the warning shown, and writing a value that is already stored is accepted and leaves the setting untouched. Hiding the warning does not shorten or extend any lifetime: what a room does with ageing files is decided by the room itself.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if the room lifetime warning is now hidden for the caller | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
keepNewFileName
BooleanWrapper keepNewFileName(SettingsRequestDto)
PUT /api/2.0/files/keepnewfilename
Keep the default file name
Stores whether the caller wants new documents created with the default name instead of being asked for one, and returns the value that is now stored. It is a preference of the calling account: every authenticated role down to a guest may change its own copy, one member's choice never affects another, and an unauthenticated caller is refused. The portal only keeps the value and reports it - the creation operations, POST api/2.0/files/{folderId}/file among them, always use the title they are given, so this setting changes what an interface asks for rather than what the server does. Writing a value that is already stored is accepted and leaves the setting and the audit trail untouched. The value is published as keepNewFileName by GET api/2.0/files/settings, which is the only way to read it back. A new account starts with the prompt in place. The title a created document actually gets, and how a clash with an existing title is resolved, are decided by the creation request rather than here.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if new documents are created with the default name | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
resetDefaultTemplate
DefaultTemplateSettingsWrapper resetDefaultTemplate(DefaultTemplateSettingsResetRequestDto)
DELETE /api/2.0/files/settings/defaulttemplate
Reset the default template setting
Drops the custom blank document configured for one extension and returns the full set of templates as it now stands. New documents of that extension are created from the portal's built-in blank again, and the file that served as the custom one is deleted from the template storage - the original the template was copied from is untouched. The extension is named in the request body, and the entry for it comes back with selectedFile null. Resetting an extension that has no custom blank is accepted and changes nothing, which makes a repeated call safe; an extension the built-in template set does not cover is ignored in the same way. Requires the portal settings permission, so only the portal owner and a DocSpace administrator may call it. To set a blank instead of dropping it, use PUT api/2.0/files/settings/defaulttemplate. Documents already created from the custom blank are left as they are - the reset only decides what the next new document of that extension starts from. The set as it stands can also be read with GET api/2.0/files/settings/defaulttemplate.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DefaultTemplateSettingsResetRequestDto | body | DefaultTemplateSettingsResetRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The blank document configured for each supported extension after the reset | DefaultTemplateSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not read the portal settings | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
DefaultTemplateSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setDefaultTemplate
DefaultTemplateSettingsWrapper setDefaultTemplate(DefaultTemplateSettingsRequestDto)
PUT /api/2.0/files/settings/defaulttemplate
Change the default template setting
Makes an existing document the blank the portal creates for one extension, and returns the full set of templates as it now stands. The file is copied into the portal's template storage, so later edits of the original do not change the blank, and the file that served as the previous custom blank for that extension is deleted. selectedFile takes the identifier of a file the caller may copy - a number for a document stored in the portal, a string for one in a connected third-party storage - and its extension must be the one named in fileExtension; a mismatch or an identifier of another kind answers 400, a file the caller may not copy answers 403, and a file that is not there is answered as missing. An extension the built-in template set does not cover is not an error: the call succeeds and changes nothing, so compare the answer with what was asked for. Requires the portal settings permission.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DefaultTemplateSettingsRequestDto | body | DefaultTemplateSettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The blank document configured for each supported extension after the change | DefaultTemplateSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The file identifier is of an unsupported kind, or its extension is not the one requested | - | - |
| 403 | The caller may not read the portal settings, or may not copy the selected file | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
DefaultTemplateSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setOpenEditorInSameTab
BooleanWrapper setOpenEditorInSameTab(SettingsRequestDto)
PUT /api/2.0/files/settings/openeditorinsametab
Open document in the same browser tab
Stores whether the caller wants documents opened in the current browser tab instead of a new one, and returns the value that is now stored. It is a preference of the calling account: every authenticated role down to a guest may change its own copy, and an unauthenticated caller is refused. The portal only keeps the value - the editor addresses returned by the file operations are the same either way, so this setting changes how a client opens them rather than what it receives. Writing a value that is already stored is accepted and leaves the setting untouched. The value is published as openEditorInSameTab by GET api/2.0/files/settings, which is the only way to read it back. A new account starts with documents opening in a new tab. Nothing about the document changes with it: the editing session, the access rights that apply and the addresses handed out are the same whichever tab a client uses.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if documents are opened in the current browser tab | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setOrganizeRoomsGrouping
BooleanWrapper setOrganizeRoomsGrouping(SettingsRequestDto)
PUT /api/2.0/files/settings/organizegrouping
Organize rooms grouping
Stores whether the caller sees rooms arranged by the groups they belong to instead of one flat list, and returns the value that is now stored. It is a preference of the calling account: every authenticated role down to a guest may change its own copy, and an unauthenticated caller is refused. The groups themselves are the room groups managed under api/2.0/files/group, and they exist whether or not this setting is on - the portal only records the preference, while GET api/2.0/files/rooms keeps returning the same rooms either way, so the arrangement is done by the client. Writing a value that is already stored is accepted and leaves the setting untouched. The value is published as organizeRoomsGrouping by GET api/2.0/files/settings, which is the only way to read it back. A new account starts with the grouping on. Turning it off changes no group: the groups, the rooms in them and who may see them stay exactly as they were, and are still read through the room group operations.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if the caller sees rooms arranged by room groups | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
showQuickActions
BooleanWrapper showQuickActions(SettingsRequestDto)
PUT /api/2.0/files/showquickactions
Display quick actions
Turns the quick action buttons shown next to a file name on or off, and answers with the value that was sent. This is a preference of the calling account rather than a portal setting, so it changes what the caller sees and nothing for anybody else; any authenticated role down to a guest may set it, while an unauthenticated caller is refused. The value is written only when it differs from the one already stored, and only then is the change recorded in the audit trail, so repeating the same call is harmless and leaves no trace. An account that has never set it is treated as having the buttons on. The answer echoes the request instead of re-reading what was stored, so read the setting back through GET api/2.0/files/settings, which publishes it as showQuickActions.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if quick action buttons are now shown to the caller next to a file name | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
storeForcesave
BooleanWrapper storeForcesave()
PUT /api/2.0/files/storeforcesave
Change the ability to store the forcesaved files
Reports that forcesaved versions are not kept as separate file versions in this portal. The operation is a stub kept for compatibility: it takes no request body, stores nothing and always answers false, so it neither turns the behaviour on nor off and repeating it changes nothing. What it describes is what happens to the intermediate saves the editor makes while a document is still open - they update the current version instead of piling up as new ones in GET api/2.0/files/file/{fileId}/history. Any authenticated role down to a guest may call it; an unauthenticated caller is refused. The same constant is published as storeForcesave by GET api/2.0/files/settings, which is the cheaper way to read it. Its companion stub PUT api/2.0/files/forcesave answers for forcesaving itself in the same way. Version history is not affected by this call either: the versions a document really has are the ones the file history operation lists, and a new one appears when the editing session is closed.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always false: forcesaved versions are not kept separately | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
storeOriginal
BooleanWrapper storeOriginal(SettingsRequestDto)
PUT /api/2.0/files/storeoriginal
Change the ability to upload original formats
Stores whether the caller's uploads keep the original file when the portal converts them into an editable format, and returns the value that is now stored. With set=true the converted document is saved as a new file next to the upload, so both the original and the converted copy stay in the folder; with set=false the conversion replaces the uploaded file with a new version of it whenever the caller may edit that file. The setting belongs to the calling account alone: every authenticated role down to a guest may change its own copy, and an unauthenticated caller is refused. It applies to conversion on upload and to PUT api/2.0/files/file/{fileId}/checkconversion, not to files already stored. The value is published as storeOriginalFiles by GET api/2.0/files/settings, which is the only way to read it back. The change is recorded in the portal audit trail.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true if the original file is kept when an upload is converted | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
updateFileIfExist
BooleanWrapper updateFileIfExist(SettingsRequestDto)
PUT /api/2.0/files/updateifexist
Update a file version if it exists
Reports that uploading a file under a name that already exists does not update the existing file. The operation is a stub kept for compatibility: the request body is read but ignored, nothing is stored, and the answer is always false, so calling it changes no behaviour and repeating it changes nothing. What actually decides the outcome of a name clash is the parameter of the upload itself - see the createNewIfExist and conflict-resolution parameters of the operations under api/2.0/files/{folderId}/upload and of PUT api/2.0/files/fileops/copy. Any authenticated role down to a guest may call it; an unauthenticated caller is refused. Because the value is a constant, there is nothing to read back afterwards, and GET api/2.0/files/settings does not publish it. To add a version to a document that is already stored, address the file directly through the update operations under api/2.0/files/file/{fileId} instead of uploading under the same name and relying on this setting.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SettingsRequestDto | body | SettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always false: an upload does not update an existing file by name | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
uploadDefaultTemplate
DefaultTemplateSettingsWrapper uploadDefaultTemplate(FileExtension, File)
POST /api/2.0/files/settings/defaulttemplate
Upload a file as the default template setting
Uploads a document and makes it the blank the portal creates for one extension, and returns the full set of templates as it now stands. The request is multipart form data carrying the file, while the extension travels in the FileExtension query parameter; the extension of the uploaded file name must be exactly that one, or the call answers 403. A PDF is additionally checked to be a fillable form, and answers 403 as well when it is not one. The upload is capped at 100 MB and a larger body answers 400 while it is still streaming in. The file is stored in the portal's template storage and the file that served as the previous custom blank for that extension is deleted; an extension the built-in template set does not cover leaves everything unchanged. Requires the portal settings permission. Use PUT api/2.0/files/settings/defaulttemplate to reuse a document that is already in the portal.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| FileExtension | query | String | The extension the uploaded blank is set for, written in lower case with the leading dot, and travelling in the query string rather than in the form. It must match the extension of the uploaded file name. Only the extensions the portal's built-in template set covers are accepted, and GET api/2.0/files/settings/defaulttemplate returns exactly that list; an extension outside it leaves the settings unchanged instead of failing. | [required] [example: .docx] |
| File | form | File (binary) | The template document itself. Its file name must end with the extension named above, a PDF must be a fillable form, and the body is capped at 100 MB - a larger one is refused while it is still streaming in. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The blank document configured for each supported extension after the upload | DefaultTemplateSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The uploaded file is missing or larger than the 100 MB limit | - | - |
| 403 | The caller may not read the portal settings, or the file does not match the requested extension | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
DefaultTemplateSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
FilesSharingApi
applyExternalSharePassword
ExternalShareWrapper applyExternalSharePassword(key, ExternalShareRequestParam)
POST /api/2.0/files/share/{key}/password
Unlock a password-protected link
Submits the password of a protected external share link and answers with the same resolved link data as GET api/2.0/files/share/{key}, so this operation is called only after that one reported that a password is required. The token in the path is the requestToken of the link, and the password is the one chosen by the member who shared the entry. The call needs no authentication; a signed-in caller that may already read the room is let through by the resolve operation itself and does not need the password at all. A correct password is remembered for the caller, so later requests with the same token resolve without repeating it, and a wrong one is reported in the status field as an invalid password rather than as an HTTP error, while the remembered password is dropped. Attempts are counted per link and per calling address: once the portal's limit is reached, further attempts are rejected until the block expires, which makes the operation unsuitable for trying passwords in a loop. Nothing about the entry is changed by the call itself.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| key | path | String | The token of the external share link, taken verbatim from the requestToken of a link returned by the link operations of an entry, such as GET api/2.0/files/rooms/{id}/link. It is an opaque URL-safe string that carries the link's own identifier, so it cannot be assembled by hand. | [required] [example: q7Ry8cQ1lZ0dP3sK2mXfA9tBnV6hJ4uE8wCz5oLg] |
| ExternalShareRequestParam | body | ExternalShareRequestParam | The body of the request, holding the password to check. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The entry the token points at, with the status the link reached after the password was checked | ExternalShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too many requests | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
changeFileOwner
FileEntryBaseArrayWrapper changeFileOwner(ChangeOwnerRequestDto)
POST /api/2.0/files/owner
Change the room or file owner
Hands the ownership of the listed rooms and files over to a single account, and returns the entries as they look afterwards. Among folders only rooms are accepted - take their identifiers from GET api/2.0/files/rooms; a plain folder is refused. A file is accepted only while it lies in the portal's common section, so a file kept inside a room or in a personal section is refused as well, and so is a file that is locked or currently open in the editor. The new owner has to be an active account that is allowed to manage rooms, and a private room additionally requires that this account has already set up its encryption keys; a deactivated account, a guest or a plain member is rejected. The caller must be the creator of every listed room, or a portal administrator. The call mutates the entries one at a time and stops at the first item it may not touch, leaving the entries already processed changed, so a partial answer is possible; an item whose owner is already the target account is returned untouched, which makes a repeat safe. The previous owner keeps access to a transferred room as its manager, while a transferred file is saved as a new version authored by the new owner. An entry that lives on a connected third-party account is quietly left out.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| ChangeOwnerRequestDto | body | ChangeOwnerRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The rooms and files whose owner has been changed, as folder and file objects | FileEntryBaseArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
getEncryptionAccess
EncryptionKeyArrayWrapper getEncryptionAccess(fileId)
GET /api/2.0/files/file/{fileId}/publickeys
Get file encryption keys
Answers with the encryption keys that open one file kept in a private room: one entry per member who holds rights on the file and has published keys, each carrying that member's public key, and the caller's own entry carrying the encrypted private half as well. The private half of another member is never handed out. A member who has not published keys yet is left out of the answer altogether, which is how a client tells that this member cannot open the file until keys are published through POST api/2.0/privacyroom/keys; a member who holds the file only through a group is not reported either, because group entries are skipped. The file has to lie in a private room or in the encrypted section - a file kept anywhere else carries no keys and is rejected as an unsupported request. The caller needs read access to the file and is answered with 403 otherwise, and a file that does not exist is answered as missing. The call is read-only, and the answer changes as soon as a member publishes or rotates keys, so read it again rather than caching it for a later session.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The keys of the members who can open the file, the private half only for the caller | EncryptionKeyArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not read the file | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getExternalShareData
ExternalShareWrapper getExternalShareData(key, fileId, folderId)
GET /api/2.0/files/share/{key}
Resolve an external share link
Resolves the token of an external share link into the room or file it points at, and reports the outcome of validating the link. The token is the requestToken of a link returned by the link operations of an entry, such as GET api/2.0/files/file/{id}/link or GET api/2.0/files/rooms/{id}/link. The call needs no authentication and answers a refused link in the status field rather than with an HTTP error, so that field has to be read before anything else: a token that matches no link, and a link whose entry has been archived or moved to the trash, both resolve as invalid; a link past its expiration date resolves as expired; a password-protected link resolves as requiring a password, which is then submitted through POST api/2.0/files/share/{key}/password; and a public link resolves as denied when the portal forbids sharing with people outside it. The call is not read-only: for a signed-in caller the first successful resolution puts the entry into the account's own lists, and for a visitor without an account it opens an anonymous session that later requests with the same token reuse. Pass fileId or folderId to have an entry inside the link's target echoed back.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| key | path | String | The token of the external share link, taken verbatim from the requestToken of a link returned by the link operations of an entry, such as GET api/2.0/files/rooms/{id}/link. It is an opaque URL-safe string that carries the link's own identifier, so it cannot be assembled by hand. | [required] [example: q7Ry8cQ1lZ0dP3sK2mXfA9tBnV6hJ4uE8wCz5oLg] |
| fileId | query | String | A file inside the room the link points at, echoed back in the answer's entity fields so a client can show what was opened. The value is ignored when the file does not sit under the link's target, and passing it together with a folder has no effect - the file wins. | [optional] [example: 9] |
| folderId | query | String | A folder inside the room the link points at, echoed back in the answer's entity fields. It is ignored when the folder does not sit under the link's target, and when a file is passed as well. | [optional] [example: 3] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The entry the token points at, with the validation status of the link | ExternalShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFileSecurityInfo
FileShareArrayWrapper getFileSecurityInfo(id, count, startIndex)
GET /api/2.0/files/file/{id}/share
Get file sharing rights
Lists the accounts and groups that hold rights on one file, one entry per subject, with the level each of them has, whether the caller may still change that level, and which of them owns the file. The owner comes first, then room managers, groups, ordinary members, guests, and last the accounts that have not accepted their invitation yet, each of those ranked by access level and by name. External links are left out and are listed by GET api/2.0/files/file/{id}/links instead, while a PDF form kept in a form-filling room also reports the link of that room, because the form is filled out through it. startIndex and count page through the subjects, and their total number is reported in the response headers rather than in the body. Listing takes the right to change the sharing of the file, which its creator, the manager of its room and a portal administrator acting as room manager have, while inside a public room reading the file is enough; a member who may read but not share is answered with an empty list although the header still counts the subjects, and a caller with no access, a guest included, is refused. A file that does not exist, or was deleted permanently, is answered as missing. The call is read-only; for several entries at once use POST api/2.0/files/share.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| count | query | Integer (int32) | How many entries at most to answer with, in the operations of this file that return a list; an operation that answers with a single object is not affected by it. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many entries of such a list to skip before answering, used together with count to walk through it page by page. | [optional] [example: 0] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The accounts and groups that hold rights on the file, the owner first | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getFolderSecurityInfo
FileShareArrayWrapper getFolderSecurityInfo(id, count, startIndex)
GET /api/2.0/files/folder/{id}/share
Get folder sharing rights
Lists the accounts and groups that hold rights on one folder or room, one entry per subject, with the level each of them has, whether the caller may still change that level, and which of them owns the entry. The owner comes first, then room managers, groups, ordinary members, guests, and last the accounts that have not accepted their invitation yet, each of those ranked by access level and by name. External links are left out and are listed by GET api/2.0/files/folder/{id}/links instead. startIndex and count page through the subjects, and their total number is reported in the response headers rather than in the body. For a room, and for a folder inside a public room, read access is enough; any other folder is listed only to a caller who may change its sharing, which the manager of its room and a portal administrator acting as room manager may, and a member who may only read such a folder is answered with an empty list although the header still counts the subjects. A caller with no access, a guest included, is refused, and a folder that does not exist is answered as missing. The call is read-only. For a room prefer GET api/2.0/files/rooms/{id}/share, which filters the same subjects by kind and by name.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The folder or room the operation addresses. A folder stored on the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| count | query | Integer (int32) | How many entries at most to answer with, in the operations of this folder that return a list; an operation that answers with a single object is not affected by it. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many entries of such a list to skip before answering, used together with count to walk through it page by page. | [optional] [example: 0] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The accounts and groups that hold rights on the folder, the owner first | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getGroupsMembersWithFileSecurity
GroupMemberSecurityRequestArrayWrapper getGroupsMembersWithFileSecurity(fileId, groupId, count, startIndex, filterValue)
GET /api/2.0/files/file/{fileId}/group/{groupId}/share
Get file access of group members
Lists the members of one portal group together with the access each of them has on a file that group was granted rights to: groupAccess is the level the group itself carries, userAccess is the level set on that member alone, overridden says which of the two applies, owner marks the member who created the file, and canEditAccess says whether the caller may still change that member's level. Take the group identifier from the group entries of GET api/2.0/files/file/{id}/share. startIndex and count page through the members, filterValue keeps only those whose first name, last name or email contains the value - the comparison is made in lower case, so an uppercase value matches nothing - and the number of members is reported in the response headers. Members come back ordered by first name. A group that holds no rights on this file, a file the caller cannot read and a file that does not exist are all answered with an empty list rather than an error, so an empty answer does not mean that the group has no members. A guest is refused. The call is read-only.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file whose access is being read. A file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| groupId | path | UUID (uuid) | The group whose members are listed. Take it from the entries of GET api/2.0/files/file/{id}/share that stand for a group; a group that holds no rights on this file is answered with an empty list. | [required] [example: 9924256a-739c-462b-af15-e652a3b1b6eb] |
| count | query | Integer (int32) | How many members at most to answer with. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many members to skip before answering, used together with count to page through a large group. | [optional] [example: 0] |
| filterValue | query | String | Keeps only the members whose first name, last name or email contains this value. The value is matched in lower case, so an uppercase one finds nothing. | [optional] [example: john] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The members of the group with the access each of them has on the file | GroupMemberSecurityRequestArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
GroupMemberSecurityRequestArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getGroupsMembersWithFolderSecurity
GroupMemberSecurityRequestArrayWrapper getGroupsMembersWithFolderSecurity(folderId, groupId, count, startIndex, filterValue)
GET /api/2.0/files/folder/{folderId}/group/{groupId}/share
Get folder access of group members
Lists the members of one portal group together with the access each of them has on a folder or room that group was granted rights to: groupAccess is the level the group itself carries, userAccess is the level set on that member alone, overridden says which of the two applies, owner marks the member who created the entry, and canEditAccess says whether the caller may still change that member's level. Take the group identifier from the group entries of GET api/2.0/files/folder/{id}/share. startIndex and count page through the members, filterValue keeps only those whose first name, last name or email contains the value - the comparison is made in lower case, so an uppercase value matches nothing - and the number of members is reported in the response headers. Members come back ordered by first name. A group that holds no rights on this folder, a folder the caller cannot read and a folder that does not exist are all answered with an empty list rather than an error, so an empty answer does not mean that the group has no members. A guest is refused. The call is read-only.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| folderId | path | Integer (int32) | The folder or room whose access is being read. A folder stored on the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| groupId | path | UUID (uuid) | The group whose members are listed. Take it from the entries of GET api/2.0/files/folder/{id}/share that stand for a group; a group that holds no rights on this folder is answered with an empty list. | [required] [example: 9924256a-739c-462b-af15-e652a3b1b6eb] |
| count | query | Integer (int32) | How many members at most to answer with. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many members to skip before answering, used together with count to page through a large group. | [optional] [example: 0] |
| filterValue | query | String | Keeps only the members whose first name, last name or email contains this value. The value is matched in lower case, so an uppercase one finds nothing. | [optional] [example: john] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The members of the group with the access each of them has on the folder | GroupMemberSecurityRequestArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
GroupMemberSecurityRequestArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getSecurityInfo
FileShareArrayWrapper getSecurityInfo(BaseBatchRequestDto)
POST /api/2.0/files/share
Get sharing rights in batch
Returns who has access to the files and folders listed in the request, merged into one list of subjects, and is the batch counterpart of GET api/2.0/files/file/{id}/share and GET api/2.0/files/rooms/{id}/share. Identifiers come from any listing operation, such as GET api/2.0/files/{folderId}. The caller needs read access to every listed entry: a single entry it cannot read makes the whole call fail instead of dropping that entry, so the list has to be filtered beforehand. Identifiers that match nothing are skipped without an error, and an empty list of identifiers gives an empty answer. The call is read-only. Each account or group appears once: the caller's own record comes first, the owner's record second, and the rest are ordered by display name. When the same subject holds different rights on the listed entries, its access is reported as the Varies value instead of a real level, which means the entries have to be inspected one by one to see the difference. Records that describe external links are included only for a caller that is allowed to read the links of the entry.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BaseBatchRequestDto | body | BaseBatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The merged sharing rights of the listed files and folders, one record per account or group | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
getSharedUsers
MentionWrapperArrayWrapper getSharedUsers(fileId)
GET /api/2.0/files/file/{fileId}/sharedusers
Get users to mention in a file
Lists the portal members who can read the file, which is what an editor client offers when somebody types a mention. The set holds the readers of the file plus everyone who reads it by role rather than by share - the portal owner, the DocSpace administrators and the author of the file - while the caller themselves, the subjects standing behind external links and deactivated accounts are left out. It is ordered by display name as the portal renders it. A guest receives a single entry, the owner of the file, because a guest is not a portal member and may not learn who else works on the document. The caller needs read access to the file, and an unknown file id is reported as missing. The call only reads. A caller who reached the file through an external link instead of an account is answered with nothing at all. For the users to offer when protecting a document use GET api/2.0/files/file/{fileId}/protectusers.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the operation addresses. Take the identifier from a listing such as GET api/2.0/files/{folderId}: a file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The portal members who can read the file, ordered by display name | MentionWrapperArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
removeSecurityInfo
BooleanWrapper removeSecurityInfo(BaseBatchRequestDto)
DELETE /api/2.0/files/share
Remove sharing rights in batch
Revokes the access of every account and group on the files and folders listed in the request, and clears the entries from the caller's own favorites, recent and unread marks. The owner's own record is kept, since removing it would take the entry away from the account that owns it, and external links survive untouched - remove those through the link operations of the entry. The caller must be allowed to change the access of each entry, which means the creator of the room, a portal administrator, or a member with the rights to manage it; a caller whose only access came through an external link may use this call to drop the entry from its own list, while a directly invited member or an unrelated account is refused. The answer is always true and identifiers that match nothing are skipped silently, so a successful answer is not proof that anything was revoked - read the rights back with POST api/2.0/files/share. The call is destructive and safe to repeat. To take the rights of one account away instead of all of them, call PUT api/2.0/files/share with that account's access set to None.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BaseBatchRequestDto | body | BaseBatchRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true: the accounts and groups that had access to the listed entries no longer have it | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
sendEditorNotify
AceShortWrapperArrayWrapper sendEditorNotify(fileId, MentionMessageWrapper)
POST /api/2.0/files/file/{fileId}/sendeditornotify
Notify mentioned users
Emails the people named in emails that they were mentioned in a file, with a link that opens the file at the place the mention sits when actionLink carries the anchor the editor produced. Only addresses that belong to portal accounts are notified: an address that belongs to nobody is skipped, and the note is cut to its first 200 characters in the mail, while a message longer than the field allows is refused with 400. The answer is usually empty: the access list of the file comes back when the file is encrypted, or when one of the addresses belongs to nobody and the caller may share the file - that is then the cue to invite that person with PUT api/2.0/files/file/{id}/share. The caller needs comment rights, which the creator of the file, the manager of its room and a member invited to comment, review or edit have, while a guest or a member without access is refused with 403; a file that does not exist answers with 404 and a file in the trash is refused. The operation is rate-limited and answers 429 once the caller sends too many notifications. A delivery failure is swallowed, so 200 does not prove that the mail left the portal.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| fileId | path | Integer (int32) | The file the mention was made in. A file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| MentionMessageWrapper | body | MentionMessageWrapper | The notification to send. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The people who currently have access to the file, when the caller still has to invite someone; empty otherwise | AceShortWrapperArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The address list is missing, or the message is longer than the field allows | - | - |
| 403 | The caller may not comment on the file | - | - |
| 404 | The file does not exist | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setFileSecurityInfo
FileShareArrayWrapper setFileSecurityInfo(id, SecurityInfoSimpleRequestDto)
PUT /api/2.0/files/file/{id}/share
Share a file
Grants, changes or withdraws the rights of the listed accounts and groups on one file, and answers with the rights those subjects hold afterwards. Every element of share names a subject and the level it is to get, and the level that denies everything takes the access away instead; an empty share changes nothing and is answered with an empty list. A subject the caller is not allowed to share with, such as a guest who belongs to another member, is dropped without an error, so compare the answer with what was sent. With notify set, each account named is emailed about the access it received and sharingMessage is put into that mail with its markup stripped, while a message longer than the field allows is rejected as an invalid request. The caller has to be allowed to change the sharing of the file, which its creator, the manager of the room it lies in and a portal administrator acting as room manager are; anyone else, a guest and a member with read access included, is refused. The call is mutating and safe to repeat. For several files and folders in one request use PUT api/2.0/files/share.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The file whose sharing is being changed. A file stored on the portal is numbered, while a file in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| SecurityInfoSimpleRequestDto | body | SecurityInfoSimpleRequestDto | The rights to apply to the file, and whether to announce them by mail. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The rights the listed subjects hold on the file after the change | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setFolderSecurityInfo
FileShareArrayWrapper setFolderSecurityInfo(id, SecurityInfoSimpleRequestDto)
PUT /api/2.0/files/folder/{id}/share
Share a folder
Grants, changes or withdraws the rights of the listed accounts and groups on one folder, and answers with the rights those subjects hold afterwards. Every element of share names a subject and the level it is to get, and the level that denies everything takes the access away instead; an empty share changes nothing and is answered with an empty list. A subject the caller is not allowed to share with, such as a guest who belongs to another member, is dropped without an error. With notify set, each account named is emailed about the access it received and sharingMessage is put into that mail with its markup stripped, while a message longer than the field allows is rejected as an invalid request. The caller has to be allowed to change the sharing of the folder, which the manager of the room it belongs to and a portal administrator acting as room manager are; anyone else, a guest and a member with read access included, is refused. The call is mutating and safe to repeat. For a room use PUT api/2.0/files/rooms/{id}/share, which invites people by email as well.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The folder whose sharing is being changed. A folder stored on the portal is numbered, while a folder in a connected third-party account is named by an opaque string. | [required] [example: 10] |
| SecurityInfoSimpleRequestDto | body | SecurityInfoSimpleRequestDto | The rights to apply to the folder, and whether to announce them by mail. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The rights the listed subjects hold on the folder after the change | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setSecurityInfo
FileShareArrayWrapper setSecurityInfo(SecurityInfoRequestDto)
PUT /api/2.0/files/share
Set sharing rights in batch
Grants, changes or withdraws the access of the listed accounts and groups on every file and folder named in the request at once, and returns the resulting rights. Entry identifiers come from a listing operation, and the accounts and groups come from the portal's own account and group lists; an access of None withdraws the rights instead of granting them. The caller must be allowed to change the access of every listed entry - the creator of the room, a member with the rights to manage it, or a portal administrator - and a read-only member or a guest is refused even when the payload changes nothing. A subject the caller is not allowed to share with, such as a guest that belongs to another member, is skipped without an error, and an empty share collection makes the call do nothing and answer with an empty list. Repeating the same request leaves the same rights in place. The answer holds one record per listed subject for each entry that was actually processed, so it is shorter than the request when something was skipped and worth comparing against it. For a single room prefer PUT api/2.0/files/rooms/{id}/share, which also invites members by email.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SecurityInfoRequestDto | body | SecurityInfoRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The rights of the listed accounts and groups on every entry that was processed | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
FilesThirdPartyIntegrationApi
deleteThirdParty
StringWrapper deleteThirdParty(providerId)
DELETE /api/2.0/files/thirdparty/{providerId}
Remove a third-party account
Disconnects a third-party storage account from the portal and returns the ID of the folder that stood for it, in the provider-accountId form the Files operations use for third-party entries. Take providerId from GET api/2.0/files/thirdparty: it is the numeric account ID, not that composed folder ID. The member who connected the account can remove it; another member's request is refused unless they hold delete rights on the folder it stands for. Nothing is deleted at the storage service: the files stay with the provider, and what goes away is the portal's link to them together with the stored credentials, the sharing records and the tags kept for its entries. A room that was created on this account stops being available. When the account being removed is the one connected for backups by POST api/2.0/files/thirdparty/backup, its backup schedule is deleted as well. The removal cannot be repeated: once the account is gone the same ID is refused rather than confirmed, so treat the first successful answer as the record of it.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| providerId | path | Integer (int32) | The ID of the connected third-party storage account, as providerId of GET api/2.0/files/thirdparty. | [required] [example: 12] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The ID of the folder that stood for the removed account | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getAllProviders
ProviderArrayWrapper getAllProviders(excludewebdav)
GET /api/2.0/files/thirdparty/providers
Get all third-party providers
Lists the third-party storage services this portal can connect, with everything a connection form needs: the display name, the key to send as providerKey, whether the service authenticates through OAuth 2.0, the OAuth client ID and redirect URL where it does, and whether the caller has to supply the server address. Several WebDAV presets share the key WebDav and are told apart by their names, so keep the name the caller chose next to the key when building the request. Pass excludewebdav=true to drop the whole WebDAV family, including the kDrive and Yandex presets, and keep only the OAuth services. The call is read-only. An empty array is a normal answer: it is what a guest gets, and what everyone gets while the portal-wide third-party switch is off (PUT api/2.0/files/thirdparty). The connected flag of an element says the service is available on this portal, not that an account of it exists - the caller's own accounts are listed by GET api/2.0/files/thirdparty.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| excludewebdav | query | Boolean | Set to true to leave out the whole WebDAV family, the kDrive and Yandex presets included, and keep only the services that authenticate through OAuth 2.0; false lists all of them. | [optional] [example: false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The storage services this portal can connect | ProviderArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getBackupThirdPartyAccount
FolderStringWrapper getBackupThirdPartyAccount()
GET /api/2.0/files/thirdparty/backup
Get the third-party backup folder
Returns the folder of the third-party storage account the portal keeps for backups, so a caller can check where scheduled and manual backups are written. There is at most one such account per portal, connected by an administrator through POST api/2.0/files/thirdparty/backup, and it is deliberately kept out of the personal list of GET api/2.0/files/thirdparty. Any authenticated member may ask, and the call is read-only. The body is null, with a successful status, in two situations the answer does not distinguish: no backup account has been connected, and the caller has no read access to the folder of the one that is. When a folder does come back, its id is the string ID of a third-party folder and can be used with the folder operations that accept one, and its title is the title the account was saved under. Connecting a different account through the backup operation replaces this one rather than adding a second, and DELETE api/2.0/files/thirdparty/{providerId} removes it.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The root folder of the backup storage account, or null when none is connected | FolderStringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getCapabilities
ArrayArrayWrapper getCapabilities()
GET /api/2.0/files/thirdparty/capabilities
Get third-party provider capabilities
Lists the third-party storage services this portal is able to connect, in the compact form a connection dialog needs. Every element is itself an array whose first item is the provider key accepted as providerKey by POST api/2.0/files/thirdparty. For the services that authenticate through OAuth 2.0 (Box, DropboxV2, GoogleDrive, OneDrive) the second and third items are the OAuth client ID and the redirect URL this portal is registered with, so the caller can build the consent screen URL itself; the services that authenticate by login and password (SharePoint, WebDav, kDrive, Yandex) contribute a single-item array. Only the services enabled in the portal configuration are listed, and an OAuth service whose application is not configured is left out. The call is read-only. An empty array is a normal answer rather than a failure: it is what a guest gets, and what everyone gets while the portal-wide third-party switch is off (PUT api/2.0/files/thirdparty). For display names, the WebDAV presets and the flags a connection form needs, use GET api/2.0/files/thirdparty/providers instead.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The provider keys, each with the OAuth client ID and redirect URL where the service uses OAuth | ArrayArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getCommonThirdPartyFolders
FolderStringArrayWrapper getCommonThirdPartyFolders()
GET /api/2.0/files/thirdparty/common
Get common third-party folders
Lists the third-party storage accounts attached to the legacy Common section, as folder entries that can be browsed with the usual folder operations. Each entry stands for a whole connected account: its title is the account title, and providerId and providerKey identify the account behind it. Only accounts whose owner the caller may read are included, so the answer differs from one member to another. The call is read-only and returns a plain array with no paging. An empty array is the expected answer in most portals and does not mean an error: accounts connected by POST api/2.0/files/thirdparty are attached to the Rooms section, not to Common, so only accounts inherited from an older portal appear here. The list is also empty while the portal-wide third-party switch is off (PUT api/2.0/files/thirdparty) and when no storage service is configured. For the accounts the caller owns, regardless of where they are attached, use GET api/2.0/files/thirdparty.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The third-party accounts attached to the Common section, as folder entries | FolderStringArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getThirdPartyAccounts
ThirdPartyParamsArrayWrapper getThirdPartyAccounts()
GET /api/2.0/files/thirdparty
Get the third-party accounts
Lists the third-party storage accounts the caller has connected, one element per account, with the title it was saved under, the storage service behind it and the portal section it is attached to. Accounts connected by other members are not included, and neither is the portal backup account of GET api/2.0/files/thirdparty/backup, even for an administrator. The providerId of an element is the value to send to DELETE api/2.0/files/thirdparty/{providerId} and, as providerId in POST api/2.0/files/thirdparty, the way to re-authenticate that same account instead of connecting a new one. Credentials are never disclosed: auth_data comes back empty for every element. An element with roomsStorage set is available as storage for a room, while corporate marks an account inherited from the legacy Common section. The call is read-only, returns a plain array with no paging and no contractual ordering, and answers with an empty array when the caller has connected nothing. To browse the content of an account, take the folder ID from the answer of the operation that connected it or from GET api/2.0/files/@root.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The third-party accounts the caller has connected | ThirdPartyParamsArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
saveThirdParty
FolderStringWrapper saveThirdParty(ThirdPartyRequestDto)
POST /api/2.0/files/thirdparty
Connect a third-party account
Connects an account at a third-party storage service to the portal, or re-authenticates one that is already connected, and returns the folder that now stands for its root. Send providerId to update an existing account and omit it to connect a new one; the accepted providerKey values come from GET api/2.0/files/thirdparty/providers. The credentials to send depend on the service: the OAuth services take token, which is the authorization code from their consent screen and not an access token, while the WebDAV family and SharePoint take login with password, plus url where the server address is not fixed. Credentials are verified against the service before anything is stored, so a wrong password is refused and nothing is saved. The caller needs the rights to create rooms, and the portal-wide third-party switch has to be on, otherwise the call is refused. A new account is attached to the Rooms section and becomes available as room storage for POST api/2.0/files/rooms/thirdparty/{id}. Connecting twice with the same title creates two separate accounts.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| ThirdPartyRequestDto | body | ThirdPartyRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The root folder of the connected account | FolderStringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
saveThirdPartyBackup
FolderStringWrapper saveThirdPartyBackup(ThirdPartyBackupRequestDto)
POST /api/2.0/files/thirdparty/backup
Connect the third-party backup storage
Connects the third-party storage account the portal writes its backups to, and returns the folder that stands for its root. Only a portal administrator may call it, and the portal-wide third-party switch has to be on; other callers are refused. The account is portal-wide and single: a second call does not add another one but re-authenticates and retitles the existing one, which makes the operation safe to repeat with the same body. The credentials follow the same rules as in POST api/2.0/files/thirdparty - an authorization code in token for the OAuth services, login with password and, where the server address is not fixed, url for the WebDAV family and SharePoint - and are verified against the service before anything is stored, so a wrong password leaves the previous account untouched. The account is deliberately absent from GET api/2.0/files/thirdparty; read it back with GET api/2.0/files/thirdparty/backup and remove it with DELETE api/2.0/files/thirdparty/{providerId}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| ThirdPartyBackupRequestDto | body | ThirdPartyBackupRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The root folder of the backup storage account | FolderStringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
RoomsApi
addRoomTags
FolderIntegerWrapper addRoomTags(id, BatchTagsRequestDto)
PUT /api/2.0/files/rooms/{id}/tags
Attach tags to a room
Attaches the named tags to a room and returns the room with its whole tag set. Tags are portal-wide labels shared by every room, and a name that the catalogue does not hold yet is created there by this call, so attaching is also the short way of adding a tag to the portal. Names already attached to the room are kept as they are, and repeating the call changes nothing, which makes it safe to retry. An empty list is accepted and does nothing, while a blank or overlong name is rejected as an invalid request. The caller must be a manager of the room or an administrator of the portal, and a room in the Archive section is refused with 403. A tag has no identifier of its own and is addressed by name, so GET api/2.0/files/tags is what shows which names already exist. Use DELETE api/2.0/files/rooms/{id}/tags to detach them again, which leaves the tags themselves in the catalogue.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room whose tags are changed, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| BatchTagsRequestDto | body | BatchTagsRequestDto | The names to attach or to detach. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room with its tag set after the change | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit this room, or the room is archived | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
archiveRoom
FileOperationWrapper archiveRoom(id, ArchiveRoomRequest)
PUT /api/2.0/files/rooms/{id}/archive
Archive a room
Queues a background job that moves one room from the Rooms section to the Archive section, and returns the operation record of that job. An archived room stays readable to its members and becomes read only: files cannot be created, renamed or edited in it, and its settings, tags, logo and links can no longer be changed, which is why many other room operations answer an archived room with a refusal. The caller must be a manager of the room; administrators of the portal cannot archive a room they were not invited to, and a room template cannot be archived at all and is answered as missing. The room is not archived when the response arrives: poll GET api/2.0/files/fileops until finished is true. Archiving an already archived room is harmless. deleteAfter decides only how long the finished record survives, not what happens to the room. Use PUT api/2.0/files/rooms/{id}/unarchive to bring the room back.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to move, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| ArchiveRoomRequest | body | ArchiveRoomRequest | The body of the request. It carries only the lifetime of the job record, so an empty object is a normal request. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The queued archive operation to poll | FileOperationWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
changeRoomCover
FolderIntegerWrapper changeRoomCover(id, CoverRequestDto)
POST /api/2.0/files/rooms/{id}/cover
Change the room cover
Sets the cover picture and the background colour a room is shown with, and returns the whole room afterwards. cover accepts only an identifier listed by GET api/2.0/files/rooms/covers, and color only six hexadecimal digits with no leading number sign, so anything else is rejected as an invalid request. Either field may be sent on its own, an empty cover clears the picture, an empty color restores the default one, and an empty body leaves the room untouched. The cover is what the room shows while it has no uploaded logo: setting a logo with POST api/2.0/files/rooms/{id}/logo hides the cover without erasing it, and deleting that logo brings it back. The caller must be a manager of the room, an archived room is refused with 403, and an unknown or deleted room is answered with 404. Repeating the same request is harmless, and the cover survives archiving and unarchiving.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to change, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| CoverRequestDto | body | CoverRequestDto | The cover and the colour to apply. Either half may be sent on its own, and an empty object leaves the room as it is. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room as it is after the cover change | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit this room, or the room is archived | - | - |
| 404 | No room with this ID is visible to the caller | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createRoom
FolderIntegerWrapper createRoom(CreateRoomRequestDto)
POST /api/2.0/files/rooms
Create a room
Creates a room in the portal Rooms section and returns it. roomType decides which sharing links, member roles and form features the room offers, and it cannot be changed afterwards, so a room of the wrong kind has to be recreated. The caller must be the portal owner, a portal administrator or a room administrator; a user or a guest is refused, and so is a public room while the portal forbids external sharing. title is required and must not be blank: characters a folder name cannot hold are replaced with underscores and the rest is truncated, so the stored title can differ from the one sent and two rooms can share it. quota is accepted only while the per-room quota feature is on and must stay within the portal quota, cover only for an id returned by GET api/2.0/files/rooms/covers, and color as six hexadecimal digits with no leading number sign. Tag names the portal does not know yet are added to the tag catalogue. share is not implemented and any non-empty value is rejected, so invite members afterwards with PUT api/2.0/files/rooms/{id}/share. Passing the portal room limit ends the call as a billing refusal and creates nothing.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CreateRoomRequestDto | body | CreateRoomRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created room with its id, type, settings, logo and tags | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createRoomFromTemplate
RoomFromTemplateStatusWrapper createRoomFromTemplate(CreateRoomFromTemplateDto)
POST /api/2.0/files/rooms/fromtemplate
Create a room from the template
Starts a background job that copies a room template into a new room of the Rooms section, and answers with the same progress record that GET api/2.0/files/rooms/fromtemplate/status returns. The caller must be able to read the template and to create rooms at all, so a user or a guest is refused, and the checks run before the job is queued. The room does not exist when the response arrives: poll the status operation until isCompleted is true, then take roomId from it, and treat a non-empty error as a failed job. Only one such job is kept per account, and a finished one is discarded when the next is started, so a second creation loses the record of the first. Anything not sent is inherited from the template, and copyLogo keeps the template logo and makes logo pointless. quota is accepted only while the per-room quota feature is on, and a template of a public room cannot be instantiated while the portal forbids external sharing. A template that does not exist or cannot be read is answered as missing.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CreateRoomFromTemplateDto | body | CreateRoomFromTemplateDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The progress record of the room creation job | RoomFromTemplateStatusWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createRoomLogo
FolderIntegerWrapper createRoomLogo(id, LogoRequest)
POST /api/2.0/files/rooms/{id}/logo
Set the room logo
Turns an image already uploaded to the portal into the logo of a room and returns the room with the addresses of the four logo sizes. This is the second half of a two-step flow: upload the picture with POST api/2.0/files/logos first and pass the path it returns as tmpFile, because the image itself is never sent here. The temporary file belongs to the account that uploaded it and is consumed by this call, so it cannot be reused for a second room and a path somebody else uploaded is refused. x, y, width and height crop the picture; sending a position without a size is rejected as an invalid request, while a size without a position is accepted. An empty tmpFile leaves the room as it is. A logo replaces the cover in the interface without erasing it, and removing the logo brings the cover back. The caller must be a manager of the room, an archived room is refused, and an unknown room is answered with 404.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room the logo is set on. | [required] [example: 1] |
| LogoRequest | body | LogoRequest | The uploaded picture and the piece of it to use. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room with the addresses of its new logo | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 404 | No room with this ID is visible to the caller | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createRoomTag
StringWrapper createRoomTag(CreateTagRequestDto)
POST /api/2.0/files/tags
Create a room tag
Adds a custom tag to the portal-wide catalog of room tags and answers with the stored name. Tags are shared by the whole portal instead of belonging to the caller: once the tag exists, every room manager can attach it to their own rooms with PUT api/2.0/files/rooms/{id}/tags, and that call also creates a tag it does not find. Creating a name that is already in the catalog returns the existing tag unchanged rather than a duplicate or an error, so repeating the call after a timeout is safe. A blank name, or one longer than the published limit, is rejected as an invalid request. Only a room manager or a portal administrator may create a tag, and a user or a guest is refused. The answer is the name as stored, and that name is the value to send in the tags filter of GET api/2.0/files/rooms and in the room tag calls. The catalog itself is read with GET api/2.0/files/tags.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CreateTagRequestDto | body | CreateTagRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The name of the created tag, or of the tag that already carried this name | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Only a room manager or a portal administrator can create tags | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createRoomTemplate
RoomTemplateStatusWrapper createRoomTemplate(RoomTemplateDto)
POST /api/2.0/files/roomtemplate
Create a room template
Queues a background job that turns an existing room into a reusable room template, and returns the state of that job right away. The template lands in the portal's Templates section, inherits the source room's type, privacy, indexing, storage limit, lifetime, download and watermark settings, and receives copies of the room's files together with its ordinary subfolders and everything inside them; the service subfolders a room keeps for its own workflows are left out. The caller needs room-manager rights on the source room, and the room must not be archived: a room that cannot be found under Rooms is answered as missing, and every other refusal comes back as a rejection. The template is not ready when the response arrives, so poll GET api/2.0/files/roomtemplate/status until isCompleted is true, then read templateId; a non-empty error there means the job failed and the half-built template was removed. Only one template creation is tracked per caller, and starting another replaces the previous record. Setting public to true discards share and groups and shares the finished template with everyone instead, while copyLogo reuses the source room's own picture and makes logo irrelevant.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| RoomTemplateDto | body | RoomTemplateDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Status | RoomTemplateStatusWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createRoomThirdParty
FolderStringWrapper createRoomThirdParty(id, CreateThirdPartyRoom)
POST /api/2.0/files/rooms/thirdparty/{id}
Create a third-party room
Turns a folder of a connected third-party storage account into a room of the Rooms section, so that the files of the room keep living in that storage instead of the portal. Connect the account first with POST api/2.0/files/thirdparty and take the path parameter from a folder listing of that account: it is the identifier of a folder in the storage, not of a room. One connected account can back one room only, so a second call over the same account is refused, and so is an account that was not connected for room storage. The caller needs the right to create rooms, which a portal user and a guest do not have; a public room is refused while the administrator restricts external access, and reaching the room limit of the tariff is refused too. With createAsNewFolder the room is a new subfolder named after title, otherwise the folder from the path becomes the room itself and indexing, denyDownload, tags and logo are then dropped. The answer is the new room, whose identifiers are strings; a public or a form-filling room already has its primary link, readable with GET api/2.0/files/rooms/{id}/link.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | String | The identifier of the folder in the connected third-party storage that becomes the room, or receives it as a subfolder. Folder identifiers of a connected account are strings and are returned by the folder listings of that account. | [required] [example: box-12-|280143035119] |
| CreateThirdPartyRoom | body | CreateThirdPartyRoom | The settings of the room to be created out of the folder. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room created out of the third-party folder, with string identifiers | FolderStringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteCustomTags
deleteCustomTags(BatchTagsRequestDto)
DELETE /api/2.0/files/tags
Delete the custom room tags
Deletes custom room tags from the portal catalog by name and detaches them from every room that carries them; the rooms themselves and their content are untouched, and only the tag disappears from their tag lists. Only a portal administrator may call it, and a room manager who is allowed to create tags is refused. The names are matched exactly as they are stored: names that are not in the catalog are skipped in silence and an empty list is accepted as a no-op, so a successful answer does not prove that anything was deleted; check a name with GET api/2.0/files/tags/{tagName}/haslinks first when that matters. The call cannot be undone: creating the name again with POST api/2.0/files/tags brings back the tag but not its links, which have to be attached to each room once more. The answer carries no body. To take a tag off one room and leave it in the catalog for the others, use DELETE api/2.0/files/rooms/{id}/tags instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BatchTagsRequestDto | body | BatchTagsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The tags were removed from the catalog and from every room | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Only a portal administrator can delete tags | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteRoom
FileOperationWrapper deleteRoom(id, DeleteRoomRequest)
DELETE /api/2.0/files/rooms/{id}
Remove a room
Queues a background job that deletes one room with everything inside it, and returns the operation record of that job. Deleting a room is destructive and has no trash step: the room and its files are gone once the job finishes, unlike a file or a folder, which is moved to the trash first. The right to delete is checked before the job is queued, so a caller who may not delete the room is refused straight away and an unknown room is answered as missing; the same checks run again when the job starts, which is why the error of the finished operation still has to be read. Poll GET api/2.0/files/fileops until finished is true, or read the returned record again by its id. The record is kept until it is read once, so one poll after completion still sees it. deleteAfter in the body is required by the contract but has no effect on the job. An archived room is deleted the same way, and a second delete of the same id reports that the room is missing.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to delete, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 10] |
| DeleteRoomRequest | body | DeleteRoomRequest | The body of the request. It is required even though the deletion does not depend on what it holds. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The queued delete operation to poll | FileOperationWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteRoomLogo
FolderIntegerWrapper deleteRoomLogo(id)
DELETE /api/2.0/files/rooms/{id}/logo
Remove a room logo
Removes the uploaded logo of a room and returns the room with empty logo addresses. What the room falls back to is its cover and colour, which the logo only hid: if a cover was set before the logo, it is shown again, and POST api/2.0/files/rooms/{id}/cover is what changes it. Nothing else about the room is touched, so membership, tags, links and settings are preserved. A room that has no logo is accepted and answered with 200, and repeating the call is therefore harmless. The caller must be a manager of the room; a member invited even with editing rights is refused, and so is a room in the Archive section. A room that does not exist or was deleted is answered as missing. After the logo is removed a new one can be set again through POST api/2.0/files/logos followed by POST api/2.0/files/rooms/{id}/logo.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room with its logo removed | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
deleteRoomTags
FolderIntegerWrapper deleteRoomTags(id, BatchTagsRequestDto)
DELETE /api/2.0/files/rooms/{id}/tags
Detach tags from a room
Detaches the named tags from a room and returns the room with its remaining tag set. Only the link between the room and the tag is removed: the tag stays in the portal catalogue and keeps working for every other room, and DELETE api/2.0/files/tags is what removes it from the portal itself. Names that are not in the catalogue, or not attached to this room, are skipped without an error, so a successful answer does not prove that anything was detached; compare the returned tag set instead. An empty list is accepted and does nothing, while a null entry in the list is rejected as an invalid request. The caller must be a manager of the room or an administrator of the portal, and a room in the Archive section is refused with 403. A tag that loses its last room stays in the catalogue, and only deleting that room takes the tag with it.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room whose tags are changed, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| BatchTagsRequestDto | body | BatchTagsRequestDto | The names to attach or to detach. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room with its tag set after the change | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit this room, or the room is archived | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
getExternalDbSyncStatus
ExternalDbSyncTaskWrapper getExternalDbSyncStatus(id)
GET /api/2.0/files/rooms/{id}/externaldbsync
Get external DB sync status
Returns the record of the external database export job of a form filling room, or an empty body when the room has no job at all. The room must be a form filling room and the caller must be able to edit it, otherwise the call is refused; an unknown room is answered with 404. This is the polling target of POST api/2.0/files/rooms/{id}/externaldbsync: repeat it until isCompleted is true, and then read forms, which lists one entry per original form with its own success and error and is empty while the job is still running. percentage advances as forms are processed, status distinguishes a job that is queued, running, finished or failed, and error carries the message of a job that stopped as a whole. The record belongs to the room rather than to the account that started the job, so any member who can edit the room sees the same answer. The call changes nothing and is safe to repeat.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The synchronization job record, or an empty body when the room has no job | ExternalDbSyncTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 404 | No room with this ID is visible to the caller | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getNewRoomItems
NewItemsFileEntryBaseArrayWrapper getNewRoomItems(id)
GET /api/2.0/files/rooms/{id}/news
Get new items in a room
Returns what is new for the calling account in one room, grouped by the day the entry was last changed, with the newest day first and the entries inside a day ordered from the most recent. Only files are reported: a folder somebody else created is not an entry of its own, while a file created inside it is, however deep it lies. What the caller changed is never new for the caller, and a file that was deleted afterwards disappears from the answer. Reading this list leaves the badges alone, which is what makes it the operation to call before GET api/2.0/files/rooms/{id}, since opening the room clears them. An empty array therefore means that there is nothing new, not that the badges were already read. The caller needs access to the room; somebody who is not a member is refused, and an unknown or deleted room is answered as missing. Use GET api/2.0/files/rooms/news for the same report across every room at once.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The new files of the room, grouped by day | NewItemsFileEntryBaseArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
NewItemsFileEntryBaseArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getPublicSettings
BooleanWrapper getPublicSettings(id)
GET /api/2.0/files/roomtemplate/{id}/public
Get room template public access
Reports whether the room template addressed by id is shared with everyone or is reachable only by the accounts it was explicitly shared with. True means the Everyone group holds read access, so any member allowed to create rooms can build one from the template with POST api/2.0/files/rooms/fromtemplate; false means only the owner and the named recipients can. The identifier has to belong to a room template — take it from templateId of GET api/2.0/files/roomtemplate/status, or from the folder list of GET api/2.0/files/rooms called with searchArea set to 4 — while an ordinary room, a deleted template or an unknown value is answered as missing. The caller needs read access to the template, so somebody else's private template is refused even for a portal administrator, and members who cannot reach the Templates section at all are refused whatever the template's state. The call only reads state; use PUT api/2.0/files/roomtemplate/public to change it.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The identifier of the room template. Take it from templateId of GET api/2.0/files/roomtemplate/status, or from the folder list of GET api/2.0/files/rooms called with searchArea set to 4; an identifier of an ordinary room is not accepted. | [required] [example: 1234] [min: 1] [max: 2147483647] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Ok | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomCovers
CoversResultArrayWrapper getRoomCovers()
GET /api/2.0/files/rooms/covers
Get room cover gallery
Returns the gallery of cover pictures a room can be given: every entry pairs the identifier to send to POST api/2.0/files/rooms/{id}/cover with the drawing itself as inline vector markup ready to be rendered. The gallery is built into the product rather than stored per portal, so it is the same for every account and every room, does not depend on what rooms exist, and its identifiers do not change with the language of the request. The identifiers are unique and stable, which makes them safe to keep in a client, while the drawings behind them may change between product versions. Any account of the portal may read the gallery, but a guest is refused. The list is the only source of valid cover identifiers: a value that is not in it is rejected wherever a cover is set, including room creation and room update. The call changes nothing and is safe to repeat.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The built-in room covers with their identifiers and vector markup | CoversResultArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomCreatingStatus
RoomFromTemplateStatusWrapper getRoomCreatingStatus()
GET /api/2.0/files/rooms/fromtemplate/status
Get the room creation progress
Returns the progress of the room-from-template job started by the calling account with POST api/2.0/files/rooms/fromtemplate. The record is private to the account that started the job: jobs of other members are never reported, and only one record is kept per account. The body is empty when the account has no such record, and it is also empty when the job queue cannot be read, so an empty answer is not proof that nothing was started. progress is a percentage, isCompleted marks the end of the job whether it succeeded or failed, error carries the failure message and is empty on success, and roomId is meaningful only once the room exists. The record survives the end of the job and is dropped when the next creation starts, so polling after completion keeps returning the same answer. Poll this operation until isCompleted is true and then read the room itself with GET api/2.0/files/rooms/{id}. The call changes nothing and is safe to repeat.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The progress record of the caller room creation job, or an empty body when there is none | RoomFromTemplateStatusWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomIndexExport
DocumentBuilderTaskWrapper getRoomIndexExport()
GET /api/2.0/files/rooms/indexexport
Get the room index export
Returns the state of the index export of the calling account, the job started by POST api/2.0/files/rooms/{id}/indexexport. The record is not addressed by room: there is at most one per account, and the answer describes the latest export whichever room it was started for. When the account has never started one, or its record was cancelled, the body is null rather than an error, so null is the normal way of saying that there is nothing to report. While the job runs, percentage moves in coarse steps instead of smoothly, which makes it a rough hint rather than a measure of the remaining time; isCompleted is the field to wait on, and it is also set for a job that failed or was cancelled, so read status to tell the outcomes apart and error for the message. After a successful build, resultFileId, resultFileName and resultFileUrl point to the spreadsheet saved in the My documents section of the caller. The record survives completion and is replaced only by the next export.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the export, or null when the account has none | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomInfo
FolderIntegerWrapper getRoomInfo(id)
GET /api/2.0/files/rooms/{id}
Get room information
Returns one room with its type, title, tags, logo, cover, colour, quota and virtual data room settings, together with the access level the caller has in it. Reading the room is not a side-effect-free call: it clears the caller new-item badges for that room, and newForMe comes back as 0, so read GET api/2.0/files/rooms/{id}/news first when the new items matter. The caller needs read access to the room; portal administrators can read a room they were never invited to, while a member without access is refused. The operation also answers an anonymous caller, but only in the context of a valid external share link of that room, and a plain anonymous request is rejected as unauthenticated. A room that never existed, was deleted, or lives in a section the caller cannot see is answered as missing. Archived rooms are returned as well and are recognised by their root section rather than by a separate flag. Use GET api/2.0/files/rooms to search and page through rooms instead of guessing ids.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room with its settings and the access level of the caller | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomLinks
FileShareArrayWrapper getRoomLinks(id, type)
GET /api/2.0/files/rooms/{id}/links
Get the room links
Returns the sharing links of a room, with the invitation and the external links mixed together unless type narrows it to one kind. Each entry carries the link address, its title, access level, expiration, the flag that marks the primary external link of the room and, for invitation links, how many times it may still be used. Public and form filling rooms come with an external link created for them, so an empty answer there means that the link was revoked rather than that the room is private; rooms of the other kinds start with no links at all and only gain one when somebody creates it, which for a collaboration room and a virtual data room can be an invitation link alone. The caller needs access to the room and the right to see its links: a member invited without that right gets an empty list rather than an error, while somebody who is not in the room at all is refused. Paging parameters are not honoured here: the first hundred links are returned and the reported count is the number of entries actually sent.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room whose links are listed, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| type | query | LinkType | Narrows the answer to one kind of link: invitation links, which turn whoever opens them into a member, or external links, which open the room without an account. Leaving it out returns both kinds together. | [optional] [example: 1] [enum: 0, 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The sharing links of the room | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomSecurityInfo
FileShareArrayWrapper getRoomSecurityInfo(id, filterType, count, startIndex, filterValue)
GET /api/2.0/files/rooms/{id}/share
Get the room access rights
Returns one page of the access list of a room: the owner first, then the managers, the groups, the ordinary members, the guests and finally the invitations nobody has accepted yet, with the total in the response headers. filterType selects what is listed and defaults to accounts and groups, which leaves the sharing links of the room out; those are read with GET api/2.0/files/rooms/{id}/links. filterValue matches the displayed name of the subject, and an invitation that is still pending is listed under the email address it was sent to. Paging is done with count and startIndex, and the order is stable between calls. Any member who can read the room sees the accounts and the groups, so the list is not limited to the managers, and portal administrators can read the list of a room they were never invited to; somebody who is not in the room at all is refused. Asking for the link entries instead needs the right to see the links of the room, and a member without it gets an empty page rather than an error.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room whose access list is read, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| filterType | query | ShareFilterType | What kind of access entries to list. The default covers accounts and groups and leaves the sharing links of the room out; those are read with GET api/2.0/files/rooms/{id}/links. | [optional] [example: 0] [enum: 0, 1, 2, 4, 8, 15, 16, 32] |
| count | query | Integer (int32) | How many entries to return in one answer. The total number of matching entries comes back in the response headers, so it is what tells the caller whether another page is needed. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many matching entries to skip before the page starts. Together with the page size it walks the list, which is ordered by role and then by name and is therefore stable between calls. | [optional] [example: 0] |
| filterValue | query | String | Keeps only the entries whose displayed name contains this text. An invitation that has not been accepted yet is listed under the email address it was sent to, so that is what has to be searched for. | [optional] [example: Smith] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | One page of the room access entries, ordered by role and then by name | FileShareArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomTagsInfo
STRINGArrayWrapper getRoomTagsInfo(count, startIndex, filterValue)
GET /api/2.0/files/tags
Get available room tags
Returns the custom room tags available to the caller as a flat array of names, not of objects. What the array holds depends on the account: a portal administrator gets the whole catalog, including tags that no room uses yet, while every other account gets only the tags attached to rooms it can see, with duplicates removed. An empty answer therefore means that this caller sees no tagged room, not that the portal has no tags. filterValue keeps the names that contain the given text, ignoring case, while count and startIndex page the result; no total is returned, so a page shorter than count is the signal that the list is exhausted. The names are exactly the values accepted by the tags filter of GET api/2.0/files/rooms and by the room tag calls, which makes this the call to fill a tag picker with. Add a tag with POST api/2.0/files/tags and check whether one is still in use with GET api/2.0/files/tags/{tagName}/haslinks.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| count | query | Integer (int32) | How many tag names one page may carry. The answer reports no total, so a page shorter than this is the sign that the list is exhausted. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many tag names to skip before the page begins. Raise it by the number of names already received to read the next page. | [optional] [example: 0] [min: 0] [max: 2147483647] |
| filterValue | query | String | Keeps only the tag names that contain this text, ignoring case. It is a substring match, so a fragment from the middle of a name is enough. | [optional] [example: conf] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The tag names available to the caller | STRINGArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomTemplateCreatingStatus
RoomTemplateStatusWrapper getRoomTemplateCreatingStatus()
GET /api/2.0/files/roomtemplate/status
Get room template creation status
Reports the state of the room template creation the caller started with POST api/2.0/files/roomtemplate. The record is private to the account that started the job: work started by another member is never reported, and a caller who has started none gets an empty response instead of an object. Poll until isCompleted turns true, then take the identifier of the finished template from templateId; a non-empty error means the job failed and no template was kept. Treat isCompleted as the completion signal rather than progress, which the background job only sets to 100 once the work is over. The record outlives the job, so a finished operation can be read again and keeps returning the same identifier until the caller starts another template creation, which replaces it. The call only reads state and needs no access to the source room or to the template, but it does require an authenticated caller.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Status | RoomTemplateStatusWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomsFolder
FolderContentIntegerWrapper getRoomsFolder(type, subjectId, subjectOwnerId, searchArea, withoutTags, tags, excludeSubject, provider, quotaFilter, storageFilter, privacyFilter, count, startIndex, sortBy, sortOrder, filterValue, groupId)
GET /api/2.0/files/rooms
Get rooms
Lists the rooms of one section of the portal: the active rooms by default, or the archive, the form-filling section or the room templates, chosen with searchArea. The rooms arrive in folders while files stays empty, current describes the section itself, and total counts every room that matched the filters before paging. A caller sees only the rooms they created or were invited to, while a portal administrator sees all of them, so an empty answer means nothing is visible to this account rather than nothing exists. The remaining parameters narrow the same set, by room type, title, tags, member, owner, storage, quota and privacy, and they combine with each other. Sorting is not free of side effects: a sortBy value is also stored as this account's default order for later listings, and omitting it reuses the stored order. Page the result with count and startIndex. Read a single room with GET api/2.0/files/rooms/{id}, and create one with POST api/2.0/files/rooms.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| type | query | List | Keeps only the rooms of the listed kinds. Repeat the parameter to pass more than one value; they are combined with OR, and omitting it returns the rooms of every kind. | [optional] [example: 1] |
| subjectId | query | UUID (uuid) | Keeps only the rooms this account or group has access to, which is how the rooms of one member are listed. The identifier comes from the portal people and group listings, and the exclude flag turns the filter into its opposite. | [optional] [example: 9a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9] |
| subjectOwnerId | query | UUID (uuid) | Keeps only the rooms created by this account, regardless of who else was invited to them. The identifier comes from the portal people listing, and the exclude flag turns the filter into its opposite. | [optional] [example: 9a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9] |
| searchArea | query | SearchArea | The section to list. Every section is a separate root and a room belongs to exactly one of them at a time, so archiving a room moves it out of the active section. The default is the active section, which leaves the form-filling rooms to their own value. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
| withoutTags | query | Boolean | When true, keeps only the rooms that carry no tag at all, which is the complement of the tag filter. When false or omitted, tags play no part in the selection. | [optional] [example: false] |
| tags | query | String | A JSON array of tag names serialized into a single query value, for example [Important,Legal]. A room matches when it carries any one of them. Take the names from GET api/2.0/files/tags; a name that is not in the catalog simply matches nothing. | [optional] [example: ["Important"]] |
| excludeSubject | query | Boolean | Inverts the two subject filters: when true, the rooms of the named account are the ones left out of the answer instead of the only ones kept. It does nothing on its own. | [optional] [example: false] |
| provider | query | ProviderFilter | Keeps only the rooms whose content lives in the named third-party service, for portals where rooms may be connected to external storage. The default keeps rooms of every origin. | [optional] [example: 1] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
| quotaFilter | query | QuotaFilter | Splits the rooms by whether a storage quota was set on the room itself or it follows the portal default, which is how rooms with a custom limit are found. | [optional] [example: 1] [enum: 0, 1, 2] |
| storageFilter | query | StorageFilter | Splits the rooms by where their content is stored, in the portal itself or in a connected third-party account. It is the coarse form of the provider filter. | [optional] [example: 1] [enum: 0, 1, 2] |
| privacyFilter | query | RoomPrivacyFilter | Splits the rooms by whether they are private, that is encrypted rooms whose content the portal cannot read. Omitting it returns both kinds. | [optional] [example: 1] [enum: 0, 1, 2] |
| count | query | Integer (int32) | How many rooms one page may carry. Ask for the next page by raising the start index by the number of rooms already received. | [optional] [example: 25] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many matching rooms to skip before the page begins. Page through the answer until the skip plus the rooms received reaches the total it reports. | [optional] [example: 0] |
| sortBy | query | String | The field to order the rooms by, named as in the file listings: AZ for the title, DateAndTime for the last change, DateAndTimeCreation, Author, Size, Type, RoomType, Tags, UsedSpace, LastOpened. The name is matched ignoring case, an unknown one is rejected rather than ignored, and the accepted one also becomes this account's stored order. | [optional] [example: DateAndTime] |
| sortOrder | query | SortOrder | The direction of the order chosen by the sort field. It has no effect when no sort field is given and the stored order of the account is used. | [optional] [example: 1] [enum: 0, 1] |
| filterValue | query | String | Keeps only the rooms whose title contains this text, ignoring case. It is a substring match over the title alone: room content and tags are not searched. | [optional] [example: Sales] |
| groupId | query | Integer (int32) | Keeps only the rooms that belong to this room group. The identifier comes from GET api/2.0/files/group; the groups of portal members are a different concept and their identifiers do not match here. | [optional] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The rooms of the selected section with the paging counters | FolderContentIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller cannot read the selected section | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomsNewItems
NewItemsRoomNewItemsArrayWrapper getRoomsNewItems()
GET /api/2.0/files/rooms/news
Get new items in all rooms
Collects everything that is marked as new for the caller across the active rooms into one answer, grouped first by the day an entry changed and then by the room it belongs to. An entry becomes new when somebody else creates or changes it in a room the caller has already opened, so the caller's own work never shows up here, and neither does anything from a room they have never visited. Only files are listed: a new subfolder is not an item, although files created inside it are, at any depth. The days come newest first, and inside a day the rooms and their files follow the same order by change time. The archive is out of scope, only rooms of the active section are covered. Reading the list clears nothing: the marks stay until the room itself is opened with GET api/2.0/files/rooms/{id}. An empty array means that this account has nothing new. For one room, use GET api/2.0/files/rooms/{id}/news.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The new entries of every active room, grouped by day and by room | NewItemsRoomNewItemsArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
NewItemsRoomNewItemsArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomsPrimaryExternalLink
FileShareWrapper getRoomsPrimaryExternalLink(id)
GET /api/2.0/files/rooms/{id}/link
Get the room primary external link
Returns the primary external link of a room, which is the one address meant to be handed out to people outside the portal. A public room and a form filling room get such a link when they are created, and asking for it again returns the same link rather than a new one, so the answer is stable. In a room that has no primary link yet this call creates one instead of reporting nothing, which needs the right to manage the links of the room: a member invited with a lower level is refused with 403, and so is anybody who is not in the room at all. A link that was explicitly revoked stays revoked and is reported as missing rather than recreated, and an unknown room is answered with 404 as well. An archived public room still reports its link. The answer is the same entry that GET api/2.0/files/rooms/{id}/links returns with the primary flag set, including the request token that has to travel with the address.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The primary external link of the room | FileShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not see the links of this room | - | - |
| 404 | No room with this ID is visible to the caller, or its primary link was revoked | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
hasTagLinks
BooleanWrapper hasTagLinks(tagName2, tagName)
GET /api/2.0/files/tags/{tagName}/haslinks
Check room tag usage
Reports whether any room still carries the named tag, which is the check to run before the tag is deleted from the catalog. Only a portal administrator may call it, and every other account is refused. The name is matched exactly against the catalog, and a name that is not in it is answered with 404. That also tells the two ways a tag stops being used apart: taking the tag off the last room that carried it leaves the tag in the catalog and turns the answer to false, while deleting that last room removes the tag itself, after which the call answers 404. A true answer means at least one room, active or archived, still references the tag, so deleting it with DELETE api/2.0/files/tags would strip it from those rooms. The handler reads the tag name from the query string, so the value has to be sent twice: in the path segment and as the tagName query parameter.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| tagName2 | path | String | The tag being checked. Send the same value as the tagName query parameter, which is the one the handler reads. | [required] |
| tagName | query | String | The tag to check, spelled exactly as it is stored in the catalog. This query value is the one the handler reads, so the path segment of the same name has to repeat it. | [optional] [example: Important] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | True when at least one room still carries the tag | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 404 | No tag with this name exists in the catalog | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
pinRoom
FolderIntegerWrapper pinRoom(id)
PUT /api/2.0/files/rooms/{id}/pin
Pin a room
Pins a room to the top of the room list of the calling account and returns the room with the pinned flag set. Pinning is personal: it changes the order only for the caller, is invisible to the other members of the room, and does not survive a trip through the Archive section, so an unarchived room has to be pinned again. Pinned rooms stay above the unpinned ones whatever sorting or filter the listing uses, and their own order between each other is stable. An account may keep only a limited number of pinned rooms at a time, ten on a portal with the default configuration, and AI rooms are counted separately against their own allowance; a request over the limit is refused until something is unpinned with PUT api/2.0/files/rooms/{id}/unpin. Pinning a room that is already pinned changes nothing and is safe to repeat. Anybody who can read the room may pin it, including guests and portal administrators who were never invited, while somebody who is not in the room is refused, an archived room is rejected and an unknown room is answered as missing.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room with its pinned flag set for the caller | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
reorderRoom
FolderIntegerWrapper reorderRoom(id)
PUT /api/2.0/files/rooms/{id}/reorder
Reorder room contents
Renumbers the manual order of the items lying directly in a room so that they run from one upwards with no gaps and no duplicates, and returns the room. The order of the items relative to each other is preserved: only the numbers are compacted, and nothing is moved, renamed, duplicated or deleted. Files and folders share one sequence. Nested folders keep their own numbering and are not touched, so each level is compacted on its own. The operation is meant for a room with indexing turned on, where the manual order is what listings follow; a room without indexing accepts it and simply has nothing that depends on the result. Running it twice changes nothing the second time, and an already dense sequence is left as it is, which makes the call safe to retry. The caller must be a manager of the room; a member invited with any other level is refused, an archived room is rejected, and an unknown or deleted room is answered as missing.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room whose contents were renumbered | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
resendEmailInvitations
resendEmailInvitations(id, UserInvitation)
POST /api/2.0/files/rooms/{id}/resend
Resend the room invitations
Sends the room invitation email again to members who were invited but have not joined yet. resendAll covers every pending invitation of the room and makes usersIds irrelevant, while an explicit list without that flag is limited to the named accounts. An account that has already accepted the invitation, is not a member of the room, or is invisible to the caller is skipped without an error, and a request that names nobody and does not set the flag does nothing, so a successful answer never proves that a message went out. Nothing about the room or its membership changes, and the operation can be repeated. The caller must be a manager of the room, an archived room is refused, a room template is answered as missing, and a malformed account id is rejected as an invalid request. The call is rate limited, so a client that loops over members should send one batch instead. The response carries no body.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room whose invitations are resent, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| UserInvitation | body | UserInvitation | Which pending invitations to send again. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The invitations that were still pending have been sent again | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setPublicSettings
setPublicSettings(SetPublicDto)
PUT /api/2.0/files/roomtemplate/public
Set room template public access
Switches the room template named by id between shared with everyone and private, rewriting its whole recipient list in the process. With public true the Everyone group is granted read access, so every member allowed to create rooms can build one from the template with POST api/2.0/files/rooms/fromtemplate; with false that access is taken away. In both cases every other account and group the template was shared with — including the addresses passed as share when it was created — loses access, so this is not a way to add a single recipient to an existing list. Only the account that owns the template may call it: a portal administrator who does not own it is refused, and so is a member invited to the source room. The identifier has to resolve to a room template; an ordinary room or an unknown value is answered as missing, and an identifier below 1 is rejected as an invalid request. Repeating the call with the same value changes nothing, and nothing is returned; read the current state with GET api/2.0/files/roomtemplate/{id}/public.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SetPublicDto | body | SetPublicDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Ok | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setRoomLink
FileShareWrapper setRoomLink(id, RoomLinkRequest)
PUT /api/2.0/files/rooms/{id}/links
Set the room external or invitation link
Creates, updates or deletes one sharing link of a room and returns it. linkType chooses the kind: an invitation link makes whoever opens it a member with the given access level, while an external link opens the room without an account. Omitting linkId creates a link, passing the id of an existing one updates it, and an unknown id is created with that id; the kind of an existing link cannot be changed afterwards. An access level of 0 deletes the link, and deleting the primary external link of a public or form filling room immediately replaces it with a fresh one, so such a room is never left without one. A room keeps at most one invitation link, and a second one is refused; form filling rooms take no invitation links, and collaboration, form filling and virtual data rooms take no external links. An expiration date in the past is dropped silently for an external link and rejected for an invitation link. password, denyDownload and internal apply to external links only.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room the link belongs to, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| RoomLinkRequest | body | RoomLinkRequest | The link to create, change or revoke. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The link as it is after the change, or an empty body when nothing was created | FileShareWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setRoomSecurity
RoomSecurityWrapper setRoomSecurity(id, RoomInvitationRequest)
PUT /api/2.0/files/rooms/{id}/share
Set the room access rights
Adds, changes and removes room members in one batch, and returns the resulting access list of the named subjects. Each entry names either an account or a group of the portal, or the email address of somebody who has no account yet, together with the access level to grant; an access of 0 removes the subject from the room. An entry without an access level is ignored, the same subject listed twice keeps the last level, and an empty list is accepted and changes nothing. The caller must be a manager of the room, so an invitation sent by a user or a guest is refused, and an account that is a portal user or a guest cannot be made a room manager. Inviting by email also needs the portal to allow guest invitations. A subject the caller is not allowed to see is dropped without an error, which is why the answer has to be compared with the request. Removing a member who still holds a form role is refused through error unless force is set. notify sends the invitation email with the optional message.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room whose membership changes, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| RoomInvitationRequest | body | RoomInvitationRequest | The membership changes to apply, together with how the people concerned are notified. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The access entries of the named subjects, plus a warning or an error when something was not applied | RoomSecurityWrapper | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
startExternalDbSync
ExternalDbSyncTaskWrapper startExternalDbSync(id)
POST /api/2.0/files/rooms/{id}/externaldbsync
Start external DB sync
Queues a background job that re-exports the collected data of every original form of a form filling room into the external database configured for the portal, and returns the job record. The room must be a form filling room and the caller must be able to edit it, otherwise the call is refused with 403; an unknown room is answered with 404. The export is not done when the response arrives: poll GET api/2.0/files/rooms/{id}/externaldbsync until isCompleted is true, then read forms for the per-form outcome, which stays empty while the job is running. Starting the job again while it is still running returns the same record instead of a second job, so a retry is safe; a finished job is replaced by the new one. One job is kept per room. A form whose data cannot be exported does not stop the others: it comes back in forms with success false and its own error. When the portal has no external database configured the call fails and nothing is queued.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The synchronization job record to poll | ExternalDbSyncTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The portal has no external database configured | - | - |
| 403 | The room is not a form filling room, or the caller cannot edit it | - | - |
| 404 | No room with this ID is visible to the caller | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
startRoomIndexExport
DocumentBuilderTaskWrapper startRoomIndexExport(id)
POST /api/2.0/files/rooms/{id}/indexexport
Start the room index export
Queues a background job that builds the index of a virtual data room as a spreadsheet, and answers with the job record to poll. The room has to be a virtual data room with indexing switched on, and the caller has to be its manager or a portal administrator; any other kind of room, a room template, and a member invited with a lower access level are refused, while an unknown room is answered as missing. There is one job per account: starting an export while an earlier one is still running answers with that earlier record instead of queuing a second job, and a finished record is replaced by the new one. Poll GET api/2.0/files/rooms/indexexport until isCompleted is true, then read status to tell a completed job from a failed or cancelled one, and take resultFileId and resultFileUrl from the same record. The report is saved as a spreadsheet in the My documents section of the caller, not in the room. Cancel a running job with DELETE api/2.0/files/rooms/indexexport.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The queued export job to poll | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 501 | Folder indexing is turned off | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
terminateRoomIndexExport
terminateRoomIndexExport()
DELETE /api/2.0/files/rooms/indexexport
Terminate the room index export
Cancels the room index export of the calling account and drops its job record. No room is named because there is at most one export per account, so the call always acts on the caller's own job and never on somebody else's: an account with nothing running gets a successful answer that changes nothing, which makes the call safe to repeat and makes it useless as a way of stopping an export somebody else started. Afterwards GET api/2.0/files/rooms/indexexport answers with an empty body until a new export is started with POST api/2.0/files/rooms/{id}/indexexport. The cancellation is asynchronous: the background job stops at its next checkpoint, so one that is already saving the file may still finish, and a report that was written before the cancellation stays in the My documents section of the caller and has to be deleted as an ordinary file. The answer carries no body and says nothing about whether an export was running.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The export of the calling account was cancelled, if there was one | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
unarchiveRoom
FileOperationWrapper unarchiveRoom(id, ArchiveRoomRequest)
PUT /api/2.0/files/rooms/{id}/unarchive
Unarchive a room
Queues a background job that moves one room from the Archive section back to the Rooms section, and returns the operation record of that job. The room becomes writable again with the membership, tags, logo and links it had before, while the pinned state of its members is not restored and has to be set again with PUT api/2.0/files/rooms/{id}/pin. The caller must be a manager of the room; a member who was only invited to it is refused, a room template is answered as missing, and a room that was never archived simply stays where it is. The room is not moved when the response arrives: poll GET api/2.0/files/fileops until finished is true, and expect a room that is still archived until then. deleteAfter decides only how long the finished record survives. Calling the operation twice in a row does not corrupt the room, and a deleted or unknown room id is reported as missing.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to move, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| ArchiveRoomRequest | body | ArchiveRoomRequest | The body of the request. It carries only the lifetime of the job record, so an empty object is a normal request. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The queued unarchive operation to poll | FileOperationWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
unpinRoom
FolderIntegerWrapper unpinRoom(id)
PUT /api/2.0/files/rooms/{id}/unpin
Unpin a room
Removes a room from the pinned group of the calling account and returns the room with the pinned flag cleared. Only the personal ordering of the caller changes: the room itself, its members, their roles and its contents are left exactly as they were, and the room stays in the list, simply among the unpinned ones. Unpinning frees one of the pin slots of the account, which AI rooms count separately, so it is the way out of a refused PUT api/2.0/files/rooms/{id}/pin. Unpinning a room that was never pinned is accepted and changes nothing, so the call can be repeated safely and its answer does not prove that anything was pinned before. Anybody who can read the room may unpin it, while somebody who is not in the room at all is refused and an unknown or deleted room is answered as missing. An archived room cannot be unpinned.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to act on, named by the identifier that GET api/2.0/files/rooms reports for it. Rooms kept in the portal itself use whole numbers, while a room backed by a connected third-party account uses the string form of the same listing. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room with its pinned flag cleared for the caller | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
updateRoom
FolderIntegerWrapper updateRoom(id, UpdateRoomRequest)
PUT /api/2.0/files/rooms/{id}
Update a room
Applies a partial change to one room and returns the whole room as it is after it. Only the fields present in the body are touched, an empty body changes nothing, and a property the body does not define is rejected as an invalid request instead of being ignored. The caller must be a manager of this room: portal administrators do not get in without an invitation, and an archived room is refused. title is trimmed, sanitised the way a room title is sanitised at creation, and a blank value is treated as no change. tags replaces the whole tag set and an empty array clears it, an empty color restores the default and an empty cover removes the cover. A quota of -1 switches the room back to no custom limit, any other negative value restores the portal default, and a positive one is accepted only while the per-room quota feature is on. Turning indexing on renumbers the room contents. chatSettings belongs to an AI room and is rejected anywhere else. Use POST api/2.0/files/rooms/{id}/logo for logo cropping.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room to update, named by the identifier that GET api/2.0/files/rooms reports for it. | [required] [example: 1] |
| UpdateRoomRequest | body | UpdateRoomRequest | The fields to change. Only the properties present in the object are applied, and a property that the object does not define is rejected instead of being ignored. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room as it is after the update | FolderIntegerWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
updateRoomTag
StringWrapper updateRoomTag(UpdateTagRequestDto)
PUT /api/2.0/files/tags
Rename a room tag
Renames a custom room tag in the portal catalog. The rename follows the tag everywhere it is used: every room that carries it keeps it and shows the new name, so nothing has to be re-attached afterwards. Only a portal administrator may rename a tag, and a room manager who is allowed to create tags is still refused here. The old name is matched exactly as it is stored rather than searched for, and a name that is not in the catalog is answered as missing. A new name that another tag already occupies is rejected as an invalid request, because tag names are unique across the portal; both names must be non-blank and within the published length limit. The answer is the new name. Stored queries are not updated for the caller: a tags filter of GET api/2.0/files/rooms that still names the old value stops matching anything. The catalog is read with GET api/2.0/files/tags.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| UpdateTagRequestDto | body | UpdateTagRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The new name of the renamed tag | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Only a portal administrator can rename a tag | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
uploadRoomLogo
UploadResultWrapper uploadRoomLogo(File)
POST /api/2.0/files/logos
Upload a room logo image
Stores an image in temporary storage and answers with the path to it, which is the first half of setting a room logo. No room changes here: pass the returned path as tmpFile to POST api/2.0/files/rooms/{id}/logo, together with the crop rectangle, to make the image the logo of a room. The image travels as multipart form data, and the first file part of the request is the one that is used while any other part is ignored. It is re-encoded to PNG and scaled down to fit 1280 by 1280 pixels, so a larger picture is accepted and shrunk, while a part that is not a readable image, or one over the portal limit for uploaded images, is refused with 400. Only a room manager or a portal administrator may upload, and everyone else gets 403. Every call produces a new path, and an image that is never used stays in temporary storage until it is cleaned up, so uploading twice is harmless.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| File | form | File (binary) | The image data. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The path of the stored temporary image | UploadResultWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The request carries no image, or the image cannot be used as a logo | - | - |
| 403 | Only a room manager or a portal administrator can upload a logo | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
RoomsGroupsApi
addRoomGroup
RoomGroupWrapper addRoomGroup(RoomGroupRequestDto)
POST /api/2.0/files/group
Add a new room group
Creates a room group, a personal collection that gathers rooms the caller already works with under one name and icon; it belongs to the account that created it and is never shown to other members of the portal. Pass the group name, the identifier of one of the built-in covers offered by GET api/2.0/files/rooms/covers, and a list of at least one room - a number for a room stored in the portal, a string for a room on a connected third-party account. Any role may create its own group, a guest included: what is checked is read access to each listed room, not the role of the caller. Repeated identifiers are collapsed, and a value that is not a room identifier at all is rejected as an invalid request. When none of the listed rooms can be read the group is not created; when only some of them can, the group is created with those rooms and the call is still reported as failed, so re-read GET api/2.0/files/group before retrying. A room may sit in several groups, and two groups of the same account may carry the same name. The answer is the stored group with its rooms.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| RoomGroupRequestDto | body | RoomGroupRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created room group with the rooms that were linked to it | RoomGroupWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
changeRoomGroupIcon
RoomGroupWrapper changeRoomGroupIcon(id, IconRequest)
POST /api/2.0/files/group/{id}/icon
Change room group icon
Replaces the icon of one of the caller's own room groups and returns the whole group, its name and its rooms left as they were. Send the identifier of one of the built-in covers offered by GET api/2.0/files/rooms/covers; an empty string strips the icon, after which the group comes back with an empty icon, and any other value - including a word that merely reads like one, such as none - is rejected as an invalid request. An uploaded image cannot be used here, unlike the logo of a room. Leaving icon out of the body or sending it as null is accepted and changes nothing, whereas a request that carries no body at all, or a body that is not JSON, is refused. Setting the icon the group already has is accepted as well, so retrying the call is safe. Any role may re-icon its own group, and a group belonging to another account is answered as missing rather than refused, exactly as reading it would be.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room group to re-icon, identified by the value GET api/2.0/files/group reports for it. A group of another account cannot be addressed and reads as missing. | [required] [example: 42] |
| IconRequest | body | IconRequest | The icon to give the group. A body that leaves the icon out is accepted and changes nothing. | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room group with the new icon | RoomGroupWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
deleteRoomGroup
deleteRoomGroup(id, includeMembers)
DELETE /api/2.0/files/group/{id}
Delete a room group
Deletes one of the caller's own room groups. Only the collection goes away: the rooms it gathered, their content and the shares on them are left exactly as they were, and a room that was in no other group simply stops being grouped. Deleting a group of another account is refused, and an identifier that names nothing - because it never existed, or because the group has already been deleted - is answered as missing, so repeating the call after a successful delete does not report success a second time. The operation is destructive and cannot be undone: there is no trash for groups, and rebuilding one means calling POST api/2.0/files/group again with the same name, icon and rooms, which gives it a new identifier. Nothing is returned in the body. The includeMembers parameter is accepted here because the route shares its contract with GET api/2.0/files/group/{id}, and has no effect on what is deleted. Read the group first when the rooms it gathers still have to be recorded somewhere.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room group to act on, identified by the value GET api/2.0/files/group reports for it. A group of another account cannot be addressed and reads as missing. | [required] [example: 42] |
| includeMembers | query | Boolean | Whether the rooms of the group are listed in the answer: true fills the rooms array, false leaves it out and reports only how many there are in totalRooms. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | OK | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomGroupInfo
RoomGroupWrapper getRoomGroupInfo(id, includeMembers)
GET /api/2.0/files/group/{id}
Get room group info
Returns one room group of the calling account together with the rooms it gathers. Groups are personal: an identifier that belongs to another member is answered the same way as one that was never created or has already been deleted, and a portal administrator is no exception to that rule. Take the identifier from GET api/2.0/files/group, which lists the groups the caller owns. Set includeMembers to false to get the group without the rooms array, which is the cheaper form when only the name, the icon and the number of rooms are needed; totalRooms is filled either way. A room moved to the archive is left out of both rooms and totalRooms while its membership survives, so taking the room out of the archive brings it back into the group. Rooms stored in the portal are listed before rooms on connected third-party accounts. The call is read-only and changes nothing about the group or the rooms it refers to.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room group to act on, identified by the value GET api/2.0/files/group reports for it. A group of another account cannot be addressed and reads as missing. | [required] [example: 42] |
| includeMembers | query | Boolean | Whether the rooms of the group are listed in the answer: true fills the rooms array, false leaves it out and reports only how many there are in totalRooms. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room group with the rooms it gathers | RoomGroupWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getRoomGroups
RoomGroupArrayWrapper getRoomGroups(includeMembers)
GET /api/2.0/files/group
List room groups
Returns every room group of the calling account, each with the rooms it gathers. Only groups the caller created are listed: groups of other members never appear here, and an account that has never made one gets an empty array back. Set includeMembers to false to leave the rooms array out of every entry and keep the name, the icon and totalRooms alone, which is the cheaper form when the list is only being shown as a menu. Archived rooms are skipped in both the rooms array and the totalRooms count, and reappear once the room is taken out of the archive. The listing is neither paged nor filtered - it always carries the whole set - and the order of the entries is not contractual, so sort them on the client when the order matters. The call is read-only. Use GET api/2.0/files/group/{id} when the identifier of a single group is already known, and POST api/2.0/files/group to add one.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| includeMembers | query | Boolean | Whether the rooms of each group are listed in the answer: true fills the rooms array of every entry, false leaves it out and reports only how many there are in totalRooms. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room groups of the calling account | RoomGroupArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
updateRoomGroup
RoomGroupWrapper updateRoomGroup(id, UpdateRoomGroupRequest)
PUT /api/2.0/files/group/{id}
Update room group
Applies changes to one of the caller's own room groups: a new name, rooms to attach, rooms to detach, or any combination of the three in a single call. A body that carries none of the three ({}) is accepted and changes nothing, while a body that names them and leaves every one of them empty asks for an update that cannot be performed and is rejected as an invalid request. roomsToAdd is resolved the way creation resolves its list: every identifier has to name a room the caller can read, repeats and rooms already in the group are collapsed, and when only part of the list resolves the rest is still attached and the call is reported as failed. roomsToRemove works the other way round - a room already in the group is always detached, even when the caller has since lost access to it, whereas an identifier that is not in the group is resolved first and refused when it names nothing. The steps are applied in order and are not rolled back when a later one fails. A group of another account is answered as missing. The answer is the group as stored after the call.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The room group to change, identified by the value GET api/2.0/files/group reports for it. A group of another account cannot be addressed and reads as missing. | [required] [example: 42] |
| UpdateRoomGroupRequest | body | UpdateRoomGroupRequest | The changes to apply. Carrying none of them leaves the group as it is, and each of them may be sent on its own or together with the others. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The room group as stored after the change | RoomGroupWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
RoomsPrivacyRoomApi
deleteKeys
deleteKeys(id)
DELETE /api/2.0/privacyroom/keys/{id}
Delete an encryption key
Removes one encryption key pair from the calling user's own key set and answers 204 with no body. The pair is named by the id of an entry of GET api/2.0/privacyroom/keys; the caller's other pairs stay as they are. The call is destructive and cannot be repeated: the key material is gone for good, a second delete of the same id, like an id that was never stored, is answered with 404, and there is no parameter for another user's keys, so an authenticated member only ever deletes their own while a guest is refused. Deleting the last key the caller holds locks them out of the private rooms they belong to, their own rooms included: the rooms and their content survive untouched and stay listed as private, but GET api/2.0/privacyroom/{roomId}/access then refuses the caller until a new key is stored with POST api/2.0/privacyroom/keys. Before DocSpace 4.0 the call answered 200 with the caller's remaining keys, so a client that read that list has to call GET api/2.0/privacyroom/keys instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | UUID (uuid) | The pair to delete, taken from the id of an entry of GET api/2.0/privacyroom/keys. Only the caller's own pairs can be named here. | [required] [example: 9924256B-447C-4F19-9dbd-8ad8c39e8ff5] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 204 | The encryption key is deleted. Answered 200 with the remaining keys before DocSpace 4.0 | - | - |
| 400 | The key identifier is not a valid GUID | - | - |
| 404 | The encryption key is not found | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
null (empty response body)
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getUserKeys
EncryptionKeyArrayWrapper getUserKeys()
GET /api/2.0/privacyroom/keys
Get own encryption keys
Returns every encryption key pair the calling user holds, the encrypted private half included, which is the material a client needs in order to decrypt content in a private room. The set is personal and there is no parameter for another user's keys: an authenticated caller reads only their own, and a guest, who cannot own key material at all, always reads an empty set. The call is read-only. An empty answer, whether an empty list or none at all, means no key has been created yet, and until POST api/2.0/privacyroom/keys creates one the user cannot be invited to a private room. Each entry carries the pair's id, its owner in userId, the moment the material was stored in date, the public half, the private half encrypted with the user's password, and the portal-wide crypto engine in cryptoEngineId. For the keys that open a whole private room use GET api/2.0/privacyroom/{roomId}/access, and for the keys a single file is shared with use GET api/2.0/files/file/{fileId}/publickeys; this operation is about the caller alone.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The encryption keys of the current user | EncryptionKeyArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getUserKeysForRoom
EncryptionKeyArrayWrapper getUserKeysForRoom(roomId)
GET /api/2.0/privacyroom/{roomId}/access
Get private room access keys
Returns the encryption keys that give access to a private room: one entry per key held by each of its members, which is what a client needs in order to encrypt a file key for everyone allowed to open the room's content. Only the caller's own entries carry privateKeyEnc; another member's entry carries the public half alone, and an entry with no public half is not reported as access at all. The room has to be a private one, a room created without private mode holds no access keys and the call is refused, and it has to still exist: an unknown room, or one already moved to Trash, is reported as missing, while an archived private room still answers. Access follows room membership and not portal role: any member from read access upwards receives the full set, whereas a DocSpace administrator who is not a member is refused, and so is a caller holding no key of their own, the room creator included once they delete their last key. The call is read-only. For the keys of a single file use GET api/2.0/files/file/{fileId}/publickeys.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| roomId | path | Integer (int32) | The private room whose access keys are read. Take it from the id of the room returned by POST api/2.0/files/rooms or listed by GET api/2.0/files/rooms. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The encryption keys associated with the privacy room | EncryptionKeyArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 400 | Bad Request. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
replaceKey
EncryptionKeyArrayWrapper replaceKey(EncryptionKeyRequestDto)
PUT /api/2.0/privacyroom/keys
Rotate an encryption key
Rotates one encryption key pair of the calling user: the entry whose id matches is overwritten with the submitted publicKey and privateKeyEnc, and the caller's other pairs are left untouched. The pair has to exist already, an id that is not in the caller's set is answered with 404, and a first key is created with POST api/2.0/privacyroom/keys. This is a full replacement rather than a merge: both halves are mandatory, and a request that omits or blanks one of them is rejected as invalid with the stored pair surviving unchanged, so a rotation that means to keep the private half has to send it again. Omitting id targets the all-zero pair, the one a client that never sets an id keeps rotating. Every authenticated member rotates their own keys and only their own, and a guest is refused. The call is mutating, and repeating it with the same body leaves the same state. It answers with every key the caller holds afterwards, and from then on GET api/2.0/privacyroom/{roomId}/access reports the new public half for this member.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| EncryptionKeyRequestDto | body | EncryptionKeyRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The encryption key is replaced | EncryptionKeyArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The key material is missing, blank or too large to be stored | - | - |
| 404 | The encryption key to replace is not found | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setKeys
EncryptionKeyArrayWrapper setKeys(EncryptionKeyRequestDto)
POST /api/2.0/privacyroom/keys
Create an encryption key
Stores a new encryption key pair for the calling user and answers with that user's whole key set. The material is end-to-end: publicKey is the half other members use to encrypt file keys for this user, while privateKeyEnc arrives already encrypted with the user's own password, so the portal keeps it as opaque text. A member must hold at least one key before they can be invited to a private room, which makes this the first call of the private-room flow. Every authenticated member manages their own keys and only their own, there is no parameter for somebody else's, and a guest is refused, which is also why a guest cannot become a member of a private room. The call is mutating and is not safe to repeat: id names the pair inside the caller's set and an id that is already stored is answered with 409, while a request that omits or blanks either half is rejected as invalid and stores nothing. A successful call answers 201 with every key the caller now holds. To change the material of an existing pair use PUT api/2.0/privacyroom/keys.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| EncryptionKeyRequestDto | body | EncryptionKeyRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 201 | The encryption key is created. Answered 200 before DocSpace 4.0; the response body is unchanged | EncryptionKeyArrayWrapper | - |
| 400 | The key material is missing, blank or too large to be stored | - | - |
| 409 | A key with the same identifier already exists | - | - |
| 401 | Unauthorized | ErrorApiResponse | - |
| 429 | Too Many Requests. | ErrorApiResponse | Retry-After |
| 500 | Internal Server Error. | ErrorApiResponse | - |
| 502 | Bad Gateway. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
| 503 | Service Unavailable. Returned by the reverse proxy, response body may be HTML and not JSON. | - | - |
Return type
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
Models
Model AIConfig
| Name | Type | Description | Notes |
|---|---|---|---|
| disabled | Boolean | Indicates whether the AI feature is disabled. | [optional] [example: true] |
Model AccessRequestKeyDto
The file key issued to one account.
| Name | Type | Description | Notes |
|---|---|---|---|
| userId | UUID (uuid) | The account that is to open the file with this key; it has to have read access to the file. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| publicKeyId | UUID (uuid) | The public key the file key was encrypted with, as reported for that account by GET api/2.0/files/file/{fileId}/publickeys. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| privateKeyEnc | String | The key of the file itself, encrypted by the client with that public key, so that the plain key never reaches the portal. | [optional] [example: encrypted_key_string] [nullable] |
Model AceShortWrapper
One line of a document sharing list in display form: who the document is shared with and the label of their access level, rather than an access record with identifiers. Entries that deny access and invitation links are left out, so the list names only the subjects and links that can currently open the document.
| Name | Type | Description | Notes |
|---|---|---|---|
| user | String | Who or what the line stands for, as a display string: the display name of a member, the name of a group, or the title given to a shared link when isLink is true. It is empty when the subject has no name to show - a shared link that was never given a title, for instance. | [optional] [example: John Doe] [nullable] |
| permissions | String | The access level of that subject as a localized label, not a code: inside a room it usually names the role the subject holds there (Viewer, Editor, Room Manager), while outside a room it names the access itself (Read Only, Full Access). The wording comes from the portal resources and is translated for the current language, so show it to a person rather than compare it in code. | [optional] [example: Read Only] [nullable] |
| isLink | Boolean | Whether the line stands for a shared link instead of a member or a group. Clients use it to draw a link badge where they would otherwise draw an avatar. | [optional] [example: false] |
Model AceShortWrapperArrayWrapper
The successful API response containing the list of AceShortWrapper objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of AceShortWrapper objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model ActionConfig
An anchor inside a document, as the editor writes it.
| Name | Type | Description | Notes |
|---|---|---|---|
| data | String | The anchor value produced by the editor, opaque to the portal: it names the comment, the mention or the place the document is scrolled to. | [optional] [example: section-42] [minLength: 0] [maxLength: 256] [nullable] |
| type | String | What the anchor points at, as the editor names it - a comment thread, for instance. | [optional] [example: comment] [minLength: 0] [maxLength: 128] [nullable] |
Model ActionLinkConfig
The place inside a document that a link should open at.
| Name | Type | Description | Notes |
|---|---|---|---|
| action | ActionConfig | The anchor itself. It is passed on to the editor unchanged, so it has to be the value the editor produced for the comment or the mention it points at. | [optional] |
Model AnonymousConfigDto
How the editors treat a participant who opened the document without an account.
| Name | Type | Description | Notes |
|---|---|---|---|
| request | Boolean | Whether the editors ask an anonymous participant for a display name before letting them in. It follows the chat permission of the document, since a nameless participant cannot take part in one. | [required] [example: false] |
Model ApiDateTime
The API date and time parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| utcTime | Date (date-time) | The time in UTC format. | [optional] [example: 2018-01-01T00:00:00.0000000Z] |
| timeZoneOffset | String (date-span) | The time zone offset. | [optional] [example: 00:00:00] |
Model ApplyFilterOption
Possible values:
0— All (All)1— Files (Files)2— Folders (Folders)
Model ArchiveRoomRequest
The body of a room archiving request.
| Name | Type | Description | Notes |
|---|---|---|---|
| deleteAfter | Boolean | Whether the record of the finished job may be dropped without being read. With it off the record waits for the first poll, which is what lets the caller learn how the move ended; it has no effect on the room itself. | [optional] [example: false] |
Model ArrayArrayWrapper
The successful API response.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The response payload. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model AuditReportFormat
Possible values:
0(Xlsx)1(Csv)
Model AuthData
The credentials of a third-party storage account. The portal takes them when an account is connected and does not give them back afterwards.
| Name | Type | Description | Notes |
|---|---|---|---|
| login | String | The account name at the storage service. | [optional] [example: user@example.com] [nullable] |
| password | String | The password of the account at the storage service. | [optional] [example: p@ssw0rd!] [nullable] |
| rawToken | String | The token of the account, kept as the raw JSON document the storage service issued it in. | [optional] [example: {"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","expires_in":3600}] [nullable] |
| url | URI (uri) | The address of the storage server the account lives on. | [optional] [example: https://cloud.example.com/remote.php/dav/files/admin/] [nullable] |
| provider | String | The storage service the credentials belong to, as the provider key the account was connected with. | [optional] [example: WebDav] [nullable] |
| token | OAuth20Token | The same token as in rawToken, parsed into its OAuth 2.0 fields. | [optional] |
Model AutoCleanUpData
The trash auto-clearing setting of an account.
| Name | Type | Description | Notes |
|---|---|---|---|
| isAutoCleanUp | Boolean | Whether the trash of the account is cleared automatically. While it is false nothing is removed by the portal and the interval below is kept but unused. | [optional] [example: false] |
| gap | DateToAutoCleanUp | How long an item may stay in the trash before it is removed for good. It is reported even while clearing is off, and it is what the moment in the autoDelete field of a trashed entry is computed from. | [optional] [enum: 1, 2, 3, 4, 5, 6] |
Model AutoCleanUpDataWrapper
The successful API response containing the AutoCleanUpData object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | AutoCleanUpData | The AutoCleanUpData object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model AutoCleanupRequestDto
The trash auto-clearing setting to store: the on/off flag together with the interval.
| Name | Type | Description | Notes |
|---|---|---|---|
| set | Boolean | Whether the caller's trash is cleared automatically: with true an item is removed for good once it has been in the trash longer than the interval below, with false the portal removes nothing and waits for the trash to be emptied by hand. | [optional] [example: true] |
| gap | DateToAutoCleanUp | How long an item may stay in the trash before it is removed for good. It is written from every request, including one that switches clearing off, so send it together with the flag instead of expecting the stored interval to be kept. | [optional] [enum: 1, 2, 3, 4, 5, 6] |
Model BaseBatchRequestDto
The files and folders a background operation is applied to.
| Name | Type | Description | Notes |
|---|---|---|---|
| returnSingleOperation | Boolean | Which operations the answer carries: true returns the operation this call started and nothing else, false returns every operation of the same kind that the caller has running or unread. When nothing was queued, which happens for an empty selection, true falls back to the full list. | [optional] |
| folderIds | List | The folders to act on, by id, as reported by a folder listing such as GET api/2.0/files/{folderId}. A number addresses a folder stored in the portal itself, a string addresses a folder on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
| fileIds | List | The files to act on, by id, as reported by a folder listing such as GET api/2.0/files/{folderId}. A number addresses a file stored in the portal itself, a string addresses a file on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
Model BaseBatchRequestDto.fileIds
Model BaseBatchRequestDto.folderIds
Model BatchRequestDto
The files and folders to move or copy, the folder they go to, and the way name clashes are settled.
| Name | Type | Description | Notes |
|---|---|---|---|
| returnSingleOperation | Boolean | Which operations the answer carries: true returns the operation this call started and nothing else, false returns every operation of the same kind that the caller has running or unread. When nothing was queued, which happens for an empty selection, true falls back to the full list. | [optional] |
| folderIds | List | The folders to move or copy, by id. A number addresses a folder stored in the portal itself, a string addresses a folder on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
| fileIds | List | The files to move or copy, by id. A number addresses a file stored in the portal itself, a string addresses a file on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
| destFolderId | BatchRequestDto_allOf_destFolderId | [optional] | |
| conflictResolveType | FileConflictResolveType | What happens to an item whose name is already taken in the destination folder: skip leaves it where it is, overwrite replaces the entry at the destination, and duplicate places it beside that entry under a name with a numeric suffix. GET api/2.0/files/fileops/move reports which items would clash. | [optional] [enum: Skip, Overwrite, Duplicate] |
| deleteAfter | Boolean | Whether the finished operation is still reported: false keeps its final record readable through GET api/2.0/files/fileops until it has been read once, true drops the record as soon as the work is done. It deletes nothing: a move takes the sources away in any case, and a copy always leaves them. | [optional] |
| content | Boolean | What is taken from a listed folder: false moves or copies the folder itself, true takes only what it contains, so its files and subfolders land in the destination and the folder is not recreated there. | [optional] |
| toFillOut | Boolean | Marks every copied PDF form as a draft prepared for filling, which is how such a copy reports its filling status in a virtual data room. Files that are not forms are left unaffected. | [optional] |
Model BatchRequestDto.destFolderId
The folder the items go to, by id — a number for a folder stored in the portal itself, a string for a folder on a connected third-party account. Take it from a folder listing such as GET api/2.0/files/@root; the caller has to be allowed to create items in it, and the id of a room addresses the root of that room.
Model BatchRequestDto.fileIds
Model BatchRequestDto.folderIds
Model BatchTagsRequestDto
The tag names a request attaches to a room or detaches from it.
| Name | Type | Description | Notes |
|---|---|---|---|
| names | List | The tags, by name: a tag has no identifier of its own, and the name is what links a room to it. GET api/2.0/files/tags lists the names already in the portal catalogue. An empty list is accepted and does nothing, while a blank or overlong entry makes the whole request invalid. | [required] [example: [Finance, 2026]] |
Model BooleanWrapper
The successful API response containing the boolean value.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | Boolean | The boolean value returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model BooleanWrapper.links item
| Name | Type | Description | Notes |
|---|---|---|---|
| href | String | URL of the link | [optional] |
| action | String | Action associated with the link | [optional] |
Model ChangeHistory
The change to make to a revision group of a file.
| Name | Type | Description | Notes |
|---|---|---|---|
| version | Integer (int32) | The version the change applies to; 0 means the current version of the file. | [required] [example: 1] |
| continueVersion | Boolean | What to do with the revision group: false completes the named version, storing its content again as a fresh version that opens a new group, while true folds the last group back into the group before it, so the next save continues that revision. | [optional] [example: false] |
Model ChangeOwnerRequestDto
The rooms and files to hand over, together with the account that takes them.
| Name | Type | Description | Notes |
|---|---|---|---|
| folderIds | List | The rooms to hand over, identified as GET api/2.0/files/rooms returns them - a number for a room stored on the portal and a string for one that lives on a connected third-party account. Only rooms belong here; a folder inside a room is refused. | [optional] [example: [1, 2, 3]] [nullable] |
| fileIds | List | The files to hand over, identified as a listing operation returns them - a number for a file stored on the portal and a string for one on a connected third-party account. Only a file kept in the portal's common section is accepted. | [optional] [example: [7, 8]] [nullable] |
| userId | UUID (uuid) | The account that becomes the owner of every listed entry. It has to be an active member allowed to manage rooms, so a deactivated account, a guest or a plain member is rejected, and for a private room the account must have set up its encryption keys beforehand. | [required] [example: 9924256a-739c-462b-af15-e652a3b1b6eb] |
Model ChatSettings
The chat settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| providerId | Integer (int32) | The provider ID. | [optional] [example: 1] |
| modelId | String | The model ID. | [optional] [example: gpt-4] [nullable] |
| prompt | String | The prompt. | [optional] [example: Please analyze this document] [nullable] |
| internal | Boolean | Specifies whether the provider is internal or not. | [optional] [example: false] |
Model ChatSettingsDto
The chat configuration of an AI room.
| Name | Type | Description | Notes |
|---|---|---|---|
| prompt | String | The instruction put in front of every conversation held in the room, which sets the role the assistant takes and the way it answers. Empty when the room was left on the behaviour the portal provides by default. | [optional] [example: You are a helpful assistant for project documentation.] [nullable] |
Model CheckConversionRequestDtoInteger
The parameters of one file conversion.
| Name | Type | Description | Notes |
|---|---|---|---|
| fileId | Integer (int32) | The file to convert. It is taken from the route of the operation, so a value sent in the body is overwritten. | [optional] [example: 1] |
| sync | Boolean | How to wait for the result: true converts inside the request and answers with the finished result, which is only sensible for small documents, while false queues the conversion and answers with an entry to poll. | [optional] [example: false] |
| startConvert | Boolean | Whether the conversion is to be started. It is set by the operation itself, so a value sent in the body is overwritten. | [optional] [example: true] |
| version | Integer (int32) | The version to convert; 0 or less means the current version. | [optional] [example: 1] |
| password | String | The password that opens the source document, for a file that is protected by one; anything else may be left out. | [optional] [example: password123] [nullable] |
| outputType | String | The extension of the format to convert into, without the dot, and one the portal can produce from that source format; left out, the default of the portal for that kind of document is used. | [optional] [example: pdf] [nullable] |
| createNewIfExist | Boolean | Where the result goes when the file has been converted before: true creates another file beside the source, false replaces the converted file that already exists. | [optional] [example: false] |
Model CheckDestFolderDto
The verdict on placing the requested files in the destination folder.
| Name | Type | Description | Notes |
|---|---|---|---|
| result | CheckDestFolderResult | Whether the destination folder accepts all of the requested files, only some of them or none at all. | [optional] [enum: 0, 1, 2] |
| files | List | The requested files the destination accepts, each with the information it was listed under. The files it rejects are absent, so an empty list means that none of them is accepted. | [optional] [example: [{title=document.docx, fileEntryType=2}]] [nullable] |
Model CheckDestFolderResult
Possible values:
0— All allowed (AllAllowed)1— Part allowed (PartAllowed)2— None allowed (NoneAllowed)
Model CheckDestFolderWrapper
The successful API response containing the CheckDestFolderDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CheckDestFolderDto | The CheckDestFolderDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model CheckDocServiceUrlRequestDto
The ONLYOFFICE Docs connection settings to store and verify.
| Name | Type | Description | Notes |
|---|---|---|---|
| docServiceUrl | String | The public address of the Document Server, the one a browser loads the editor from. An empty value drops the portal's own setting, so the address configured for the deployment takes over again. A value with no scheme is stored with http:// prepended, and an absolute address may not carry a query string. | [required] [example: https://documentserver.example.com] [nullable] |
| docServiceUrlInternal | String | The address the portal itself uses for its server-to-server calls to the Document Server, for deployments where that traffic stays inside the private network. Left empty, those calls go to the public address instead. | [optional] [example: https://documentserver-internal.example.com] [nullable] |
| docServiceUrlPortal | String | The address of this portal as the Document Server has to call it back on in order to fetch and save a document. Set it when the Document Server cannot resolve the portal by its public name; left empty, the portal's own resolved address is used. | [optional] [example: https://portal.example.com] [nullable] |
| docServiceSignatureSecret | String | The shared secret that requests between the portal and the Document Server are signed with; it has to be the same value the Document Server itself is configured with, otherwise the verification of the new settings fails. It is write-only: the document service location is reported without it. | [optional] [example: secret-key-123] [nullable] |
| docServiceSignatureHeader | String | The name of the HTTP header the signature travels in, which has to match the header the Document Server expects. A secret without a header is not a usable pair and is rejected. | [optional] [example: Authorization] [nullable] |
| docServiceSslVerification | Boolean | Whether the portal validates the TLS certificate of the Document Server. With verification on, a self-signed certificate breaks the connection; with it off, any certificate is accepted, which is meant for test deployments only. Omitting the field turns verification on. | [optional] [example: true] [nullable] |
Model CheckFillFormDraft
The revision of the form to open and what the caller intends to do with it.
| Name | Type | Description | Notes |
|---|---|---|---|
| version | Integer (int32) | The revision of the form to open. Pass 0 for the current revision; a positive number addresses that entry of the file history and is accepted only from a caller who may read the history, so a member who only has fill-forms access must send 0. | [required] [example: 0] |
| action | String | What the caller intends to do with the form. view asks for a read-only address and embedded for an address to be shown inside a frame; both only resolve the address and leave the file untouched. Leave it out to enter the filling flow, where the personal draft is created or reused. The value is matched case-insensitively, and anything else behaves like an empty value. | [optional] [example: view] [nullable] |
| requestView | Boolean | Whether the caller asked for a read-only address. The server derives it from action being view and ignores any value sent with the request. | [optional] [example: false] |
| requestEmbedded | Boolean | Whether the caller asked for an address to be shown inside a frame. The server derives it from action being embedded and ignores any value sent with the request. | [optional] [example: false] |
Model CheckUploadRequest
The names to test against the files the folder already holds.
| Name | Type | Description | Notes |
|---|---|---|---|
| filesTitle | List | The names to test, extensions included, spelled as they would be sent to the upload. Matching ignores case, and a name repeated in the list is answered once. | [optional] [example: [file1.docx, file2.pdf, file3.xlsx]] [nullable] |
Model ChunkedUploadSessionResponseInteger
The reserved chunked upload: where the parts are sent, how much was declared and when the reservation lapses. No content of the file is described here.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The identifier of the reserved upload, repeated in the path of every call that follows it - the chunk uploads, the finalize and the abort. It is thirty-two hexadecimal characters without separators, and it is the only thing the server checks, so anyone holding it can write into this upload. | [optional] [example: 1b6a2ee1f2a04c6f9bd2cbf0e0f23a54] [nullable] |
| path | List (int32) | The chain of folders leading to the destination, outermost first and the destination itself last, with folders the caller cannot read left out. An answer that reports a stored part carries the destination folder alone instead of the whole chain. | [optional] [example: [1, 5, 12]] [nullable] |
| created | Date (date-time) | The moment the upload was reserved, in UTC. | [optional] [example: 2026-09-11T10:30:00Z] |
| expired | Date (date-time) | The moment the reservation lapses and the parts buffered for it are dropped, in UTC. It is a gap rather than a deadline for the whole transfer: every accepted part pushes it twelve hours past that part, so only a long silence loses the upload. | [optional] [example: 2026-09-11T22:30:00Z] |
| location | String | The absolute address of the separate chunk handler that also accepts the parts of this upload, kept for clients written against it. A caller working through this API does not need it and sends the parts to the session operations instead. | [optional] [example: https://example.com/ChunkedUploader.ashx?uid=1b6a2ee1f2a04c6f9bd2cbf0e0f23a54] [nullable] |
| bytes_total | Long (int64) | The size in bytes that was declared when the upload was reserved, echoed back. It is what the arriving parts are counted against to decide the file is complete, not the amount received so far. | [optional] [example: 10485760] |
Model ChunkedUploadSessionResponseIntegerWrapper
The successful API response containing the ChunkedUploadSessionResponseInteger object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ChunkedUploadSessionResponseInteger | The ChunkedUploadSessionResponseInteger object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model ChunkedUploadSessionResponseWrapperInteger
The reserved chunked upload wrapped in the envelope the two older session operations answer with.
| Name | Type | Description | Notes |
|---|---|---|---|
| success | Boolean | Always true in a body that reaches the caller, because a call that does not succeed answers with an error status and no body at all. It cannot be used to tell a refusal from a success. | [optional] [example: true] |
| data | ChunkedUploadSessionResponseInteger | The reserved upload itself, in the same shape the newer session operations answer with directly. | [optional] |
Model ChunkedUploadSessionResponseWrapperIntegerWrapper
The successful API response containing the ChunkedUploadSessionResponseWrapperInteger object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ChunkedUploadSessionResponseWrapperInteger | The ChunkedUploadSessionResponseWrapperInteger object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model CoEditingConfig
How co-editing is preset when the document opens, and whether the user may switch it afterwards.
| Name | Type | Description | Notes |
|---|---|---|---|
| change | Boolean | Whether the user may switch between the two co-editing modes from the editor interface, or is held to the one the portal preset. | [optional] [example: true] |
| fast | Boolean | Whether other participants see each change as it is typed. Left off, changes are exchanged only when a participant saves, and the paragraph being edited is locked for the others meanwhile. | [optional] [example: false] |
| mode | CoEditingConfigMode | The mode the two settings above amount to, as the editors name it. | [optional] [enum: 0, 1] |
Model CoEditingConfigMode
Possible values:
0— Fast (Fast)1— Strict (Strict)
Model ConfigurationDtoInteger
Everything an editor client needs in order to open one document: the document itself, the editor setup for this caller, and the signature that lets the editors trust both.
| Name | Type | Description | Notes |
|---|---|---|---|
| document | DocumentConfigDto | The document as the editors address it: its revision key, title, type, download address and the permissions of this caller on it. | [required] |
| documentType | String | The editor family the file opens in - word, cell, slide, pdf or diagram. It comes back empty for a format no editor handles. | [required] [example: word] [nullable] |
| editorConfig | EditorConfigurationDto | How the editor is set up for this opening: the mode, the language, the interface customization, the callback the editors save through, and the account they attribute changes to. | [required] |
| editorType | EditorType | The layout the configuration was actually built for. It echoes the requested one except where the room overruled it, as the templates folder does by forcing the embedded viewer. | [required] [enum: 0, 1, 2] |
| editorUrl | URI (uri) | The address of the editor api script the client has to load, with the shard key of this document already appended. Load it as it is given rather than assembling it by hand. | [required] [example: https://portal.example.com/web-apps/apps/api/documents/api.js?shardkey=1_512_3] [nullable] |
| token | String | Signs this whole configuration so that the editors can trust it; anything a client changes in the configuration invalidates it. It stays empty on a portal that has no signature secret configured for the document service. | [optional] [example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...] [nullable] |
| type | String | The layout spelled as a lowercase word - desktop, mobile or embedded - the same value the editor type carries as a number. | [optional] [example: desktop] [nullable] |
| file | FileDtoInteger | The file the configuration was built for, in the same shape the file listings report it. | [required] |
| errorMessage | String | Filled in when the document could not be prepared for opening; the rest of the configuration should then not be handed to the editors. | [optional] [example: The file is being converted] [nullable] |
| startFilling | Boolean | Whether this caller may start a filling session on the form from inside the editor. It stays empty when the file is not a form opened where starting is possible at all. | [optional] [example: false] [nullable] |
| fillingStatus | Boolean | True once the caller holds a role in the running filling session of this form. It stays empty outside a virtual data room, where roles are the only place it is set. | [optional] [example: false] [nullable] |
| startFillingMode | StartFillingMode | Which filling button the editor offers: none at all, sharing the form out for others to fill, starting a filling session, or starting one inside the form-filling room. | [optional] [enum: 0, 1, 2, 3] |
| fillingSessionId | String | Identifies the filling session this opening belongs to, and is empty when the document is not opened as part of one. Submissions made in the editor are collected under it. | [optional] [example: a1b2c3d4-0000-0000-0000-000000000000] [nullable] |
| quotaExceededScope | QuotaScope | Names the quota that ran out - the user, the room or the portal - and is set only when the document had to be opened read-only because of it. | [optional] [enum: 0, 1, 2] |
| generationToolCallState | EditorToolCallStateDto | The generation the editor should run as soon as the document opens. It is set only for a document an AI agent produced and left waiting for its content, and is empty for every other file. | [optional] |
Model ConfigurationIntegerWrapper
The successful API response containing the ConfigurationDtoInteger object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ConfigurationDtoInteger | The ConfigurationDtoInteger object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model Contact
The contact information.
| Name | Type | Description | Notes |
|---|---|---|---|
| type | String | The contact type. | [optional] [example: GTalk] [nullable] |
| value | String | The contact value. | [optional] [example: my@gmail.com] [nullable] |
Model ConversationResultArrayWrapper
The successful API response containing the list of ConversationResultDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of ConversationResultDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model ConversationResultDto
The progress of one file conversion, together with the converted file once it exists.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The identifier of the conversion entry. The portal leaves it empty for file conversions, so a caller follows its own conversion by the file it queued rather than by this value. | [required] [example: 12345] [nullable] |
| Operation | FileOperationType | Tells which kind of file operation the entry describes, so that a conversion can be told apart from the copy, move and download entries that share this envelope. A conversion entry reports the conversion type. | [required] [enum: 0, 1, 2, 3, 4, 5, 6, 7] |
| progress | Integer (int32) | How far the conversion has got, counted in percent from 0 while it is only queued to 100 once it is over - whether it ended with a converted file or with an error. 100 is the value a polling caller waits for. | [required] [example: 50] |
| source | String | Describes what is being converted: the identifier of the source file, the version that was taken and whether an existing result may be overwritten, packed as a JSON object inside a string. It is what identifies the entry when several conversions of the same caller are in flight. | [optional] [example: {"id":9846,"version":1,"updateIfExist":false}] [nullable] |
| result | oas_any_type_not_mapped | [optional] [nullable] | |
| error | String | The reason the conversion stopped, in the language of the caller, and empty while it is running and after it has succeeded. progress reaches 100 for a failure as well, so this field is what separates a converted file from a broken conversion; a conversion still unfinished after ten minutes ends with a timeout reported here. | [optional] [example: Conversion failed] [nullable] |
| processed | String | Reports whether the portal has taken the entry as far as it goes: 1 once the conversion has finished or failed, and empty while it is still queued or still being converted. It is the bookkeeping of the conversion queue rather than a result - what happened is in progress, error and result. | [optional] [example: 1] [nullable] |
Model CopyAsJsonElement
The parameters of a file copy that may change the format on the way.
| Name | Type | Description | Notes |
|---|---|---|---|
| destTitle | String | The title of the copy, extension included. That extension decides the format: the same one as the source copies the content as it is, a different one has it converted first. | [required] [example: Document Copy.docx] [nullable] |
| destFolderId | CopyAsJsonElement_destFolderId | [required] | |
| enableExternalExt | Boolean | Whether the extension of the new title may be one the portal does not edit itself. | [optional] [example: false] |
| password | String | The password that opens the source document, for a file that is protected by one. | [optional] [example: password123] [nullable] |
| toForm | Boolean | Whether the copy is to become a PDF form rather than a plain document, which the conversion supports for the text formats it can read. | [optional] [example: false] |
Model CopyAsJsonElement.destFolderId
The folder the copy is placed in, as a number for a folder inside the portal and as a string for one in a connected third-party storage; obtain it from GET api/2.0/files/@root. Anything else is answered with an empty body and nothing is copied.
Model CoverRequestDto
The picture and the colour a room is drawn with while it has no logo.
| Name | Type | Description | Notes |
|---|---|---|---|
| color | String | The background colour the room is drawn with while it has no logo, as six hexadecimal digits with no leading number sign. An empty value restores the default colour of the room type. | [optional] [example: FF5733] [pattern: /^[A-Fa-f0-9]{6}$/] [nullable] |
| cover | String | The picture drawn on the room while it has no logo, named by an identifier from GET api/2.0/files/rooms/covers. Any other value is rejected, and an empty value leaves the room without a cover. | [optional] [example: bookmark] [nullable] |
Model CoversResultArrayWrapper
The successful API response containing the list of CoversResultDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of CoversResultDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model CoversResultDto
One drawing of the built-in gallery of room covers.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The name of the cover, and the value to send as cover when a room is created or changed. The names are the same on every portal and do not change with the language of the request. | [required] [example: bookmark] [nullable] |
| data | String | The drawing itself, as inline vector markup ready to be rendered as it is. It is the default size of the cover, and it may change between product versions while the name stays. | [required] [example: <svg viewBox="0 0 32 32"><path d="M8 4h16v24l-8-6-8 6z"/></svg>] [nullable] |
Model CreateFileJsonElement
The parameters of a file that the portal creates from a template or a blank document.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The title of the new file. The extension in it decides the format, and one of a known text, spreadsheet or presentation format is rewritten to the DOCX, XLSX or PPTX of the portal unless enableExternalExt says otherwise; a title with no extension gets DOCX added. | [required] [example: New Document.docx] [minLength: 0] [maxLength: 165] [nullable] |
| templateId | CreateFileJsonElement_templateId | [optional] | |
| enableExternalExt | Boolean | Whether the extension of the title is kept as it is: true stores the title verbatim, false rewrites a known foreign format to the format the portal edits itself. | [optional] [example: false] |
| formId | Integer (int32) | A ready form from the form gallery of the portal to copy instead of a template, named by the identifier the gallery reports for it. It takes precedence over templateId; 0 means no form. | [optional] [example: 0] |
Model CreateFileJsonElement.templateId
An existing file the new one copies its content from, as a number for a file in the portal and as a string for one in a connected third-party storage; the caller has to be able to read it. Left out, a blank template for the format and the language of the caller is used.
Model CreateFolder
The title a folder is created with or renamed to.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The title the folder is given. It is trimmed before it is stored and may not be blank or consist of spaces alone; it need not differ from the titles of the neighbouring folders, so the same title may appear twice in one parent. | [required] [example: New Folder] [minLength: 0] [maxLength: 165] [nullable] |
Model CreateRoomFromTemplateDto
The parameters of a room built from a room template.
| Name | Type | Description | Notes |
|---|---|---|---|
| templateId | Integer (int32) | The room template to copy. Templates live in their own section and are listed by GET api/2.0/files/rooms with a search area of 4; an ordinary room id is rejected here. | [required] [example: 42] |
| title | String | The name of the room to create. It is sanitised and truncated the way a room title is, and a blank value is rejected; the title of the template is not reused. | [required] [example: Project Alpha] [minLength: 0] [maxLength: 170] [nullable] |
| logo | LogoRequest | The picture to use as the room logo, named by the path that POST api/2.0/files/logos returned for an image uploaded beforehand, plus the crop to take from it. Leaving the field out keeps the room on its cover and colour. It is ignored when the logo of the template is copied instead. | [optional] |
| copyLogo | Boolean | Whether the new room keeps the logo of the template. With it on the uploaded picture is ignored; with it off the room starts with no logo unless one is supplied. | [optional] [example: false] |
| tags | List | The labels to attach to the room, by name. Names the portal tag catalogue does not hold yet are added to it, and GET api/2.0/files/tags lists what already exists. Leaving the field out keeps the tags of the template. | [optional] [example: [Finance, 2026]] [nullable] |
| color | String | The background colour the room is drawn with while it has no logo, as six hexadecimal digits with no leading number sign. An empty value restores the default colour of the room type. | [optional] [example: FF5733] [minLength: 0] [maxLength: 6] [nullable] |
| cover | String | The picture drawn on the room while it has no logo, named by an identifier from GET api/2.0/files/rooms/covers. Any other value is rejected, and an empty value leaves the room without a cover. | [optional] [example: bookmark] [minLength: 0] [maxLength: 50] [nullable] |
| quota | Long (int64) | The storage the room may take, in bytes. It is accepted only while the per-room quota feature is on for the portal and must stay inside the portal own limit; leaving it out lets the room follow the portal default. | [optional] [example: 1073741824] [nullable] |
| indexing | Boolean | Whether the room keeps a manual order of its contents. With it on every file and folder carries a position that listings follow and that PUT api/2.0/files/rooms/{id}/reorder compacts; with it off the contents are ordered by the sorting of the request. Leaving it out keeps the setting of the template. | [optional] [example: true] [nullable] |
| denyDownload | Boolean | Whether members without editing rights are stopped from downloading and printing the contents of the room. They can still open the documents in the editor. Leaving it out keeps the setting of the template. | [optional] [example: false] [nullable] |
| lifetime | RoomDataLifetimeDto | How long files may stay in the room before they are deleted automatically. The countdown starts when the setting is saved, and leaving the field out keeps the files forever. Leaving the field out keeps the setting of the template. | [optional] |
| watermark | WatermarkRequestDto | The watermark drawn over documents opened in the room. Leaving the field out adds no watermark, and sending it with the switch turned off removes the one the room has. Leaving the field out keeps the setting of the template. | [optional] |
| private | Boolean | Whether the room is end-to-end encrypted. Its files can then be opened only in the desktop application by members whose encryption keys are set up, and the flag cannot be changed after the room is created. | [optional] [example: false] [nullable] |
Model CreateRoomRequestDto
The parameters of a new room in the Rooms section.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The name of the room. It is trimmed, characters that a folder name cannot hold are replaced with underscores and the rest is truncated, so the stored title can differ from the one sent; a blank title is rejected. Titles are not unique, and rooms are told apart by their id. | [required] [example: Project Alpha] [minLength: 0] [maxLength: 170] [nullable] |
| quota | Long (int64) | The storage the room may take, in bytes. It is accepted only while the per-room quota feature is on for the portal and must stay inside the portal own limit; leaving it out lets the room follow the portal default. | [optional] [example: 1073741824] [nullable] |
| indexing | Boolean | Whether the room keeps a manual order of its contents. With it on every file and folder carries a position that listings follow and that PUT api/2.0/files/rooms/{id}/reorder compacts; with it off the contents are ordered by the sorting of the request. | [optional] [example: true] [nullable] |
| denyDownload | Boolean | Whether members without editing rights are stopped from downloading and printing the contents of the room. They can still open the documents in the editor. | [optional] [example: false] [nullable] |
| lifetime | RoomDataLifetimeDto | How long files may stay in the room before they are deleted automatically. The countdown starts when the setting is saved, and leaving the field out keeps the files forever. | [optional] |
| watermark | WatermarkRequestDto | The watermark drawn over documents opened in the room. Leaving the field out adds no watermark, and sending it with the switch turned off removes the one the room has. | [optional] |
| logo | LogoRequest | The picture to use as the room logo, named by the path that POST api/2.0/files/logos returned for an image uploaded beforehand, plus the crop to take from it. Leaving the field out keeps the room on its cover and colour. | [optional] |
| tags | List | The labels to attach to the room, by name. Names the portal tag catalogue does not hold yet are added to it, and GET api/2.0/files/tags lists what already exists. | [optional] [example: [Finance, 2026]] [nullable] |
| color | String | The background colour the room is drawn with while it has no logo, as six hexadecimal digits with no leading number sign. An empty value restores the default colour of the room type. | [optional] [example: FF5733] [pattern: /^[0-9a-fA-F]{6}$/] [nullable] |
| cover | String | The picture drawn on the room while it has no logo, named by an identifier from GET api/2.0/files/rooms/covers. Any other value is rejected, and an empty value leaves the room without a cover. | [optional] [example: bookmark] [minLength: 0] [maxLength: 50] [nullable] |
| roomType | RoomType | What the room is for. It decides which sharing links, roles and form features the room offers, and it cannot be changed once the room exists, so a room of the wrong kind has to be recreated. | [required] [enum: 1, 2, 5, 6, 8, 9] |
| private | Boolean | Whether the room is end-to-end encrypted. Its files can then be opened only in the desktop application by members whose encryption keys are set up, and the flag cannot be changed after the room is created. | [optional] [example: false] |
| share | List | Not implemented on room creation: any non-empty value is rejected, and members are invited afterwards with PUT api/2.0/files/rooms/{id}/share. | [optional] [example: []] [nullable] |
| chatSettings | ChatSettings | The model and the prompt an AI room answers with. It belongs to AI rooms only and is rejected for a room of any other kind. | [optional] |
| sendFormToExternalDB | Boolean | For a form filling room, whether the data of every completed submission is also pushed to the external database configured for the portal. It is what POST api/2.0/files/rooms/{id}/externaldbsync re-runs for the forms already collected. | [optional] [example: false] [nullable] |
| saveFormAsXLSX | Boolean | For a form filling room, whether the collected submissions are also gathered into a spreadsheet stored next to the completed forms. With it off the submissions are kept only as the filled documents themselves. | [optional] [example: false] [nullable] |
Model CreateTagRequestDto
The parameters for adding a custom tag to the portal catalog of room tags.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The name of the tag to create, which is also its identity: tags are addressed by name everywhere, there is no separate identifier. It is stored exactly as sent, spacing and case included, and a name that is already in the catalog gives back that tag instead of a second one. | [required] [example: Important] [minLength: 0] [maxLength: 255] [nullable] |
Model CreateTextOrHtmlFile
The parameters of a text or HTML file created from content sent in the request.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The title of the file. The extension the operation stands for is appended unless the title already ends with it, so Notes becomes Notes.txt or Notes.html. | [required] [example: Document.txt] [minLength: 1] [maxLength: 165] [nullable] |
| content | String | The content of the file, as plain text or as HTML markup. A request carrying none is rejected as an invalid request, and for a text file content that looks like markup makes the portal store it as HTML instead. | [optional] [example: This is the file content] [nullable] |
| createNewIfExist | Boolean | What to do when the folder already holds a file of this title, the other way round than the name reads: true updates that file and adds a version to its history, false creates another file and makes its title unique, as in Notes (1).txt. | [optional] [example: false] |
Model CreateThirdPartyRoom
The room to be created out of a folder of a connected third-party storage account.
| Name | Type | Description | Notes |
|---|---|---|---|
| createAsNewFolder | Boolean | Creates a new folder named after title inside the folder named in the path and turns that subfolder into the room, leaving the named folder itself untouched. When omitted, the named folder becomes the room and keeps everything it already holds. | [optional] [example: false] |
| title | String | The name the room is shown under. It is stored on the connected account, so it does not have to match the name of the folder in the storage; with createAsNewFolder it is also the name given to the created subfolder. | [required] [example: Third-party project room] [nullable] |
| roomType | RoomType | The kind of room the folder becomes, which decides the default access rules of its members and cannot be changed afterwards. | [required] [enum: 1, 2, 5, 6, 8, 9] |
| private | Boolean | Restricts the room to the members explicitly invited into it. The flag is kept on the connected storage account rather than on the folder, so every folder read through that account reports the same value. | [optional] [example: false] |
| indexing | Boolean | Keeps the contents of the room in an explicit numbered order, the one reported as order on every entry, instead of leaving the order to the reader. | [optional] [example: true] |
| denyDownload | Boolean | Forbids downloading and printing the contents of the room, which leaves the members with viewing and editing in the editor only. | [optional] [example: false] |
| color | String | The background colour drawn behind the cover of the room, as six hexadecimal digits without a leading number sign. An empty value restores the colour the portal picks by default. | [optional] [example: FF5733] [nullable] |
| cover | String | The drawing shown on the room tile, named by one of the built-in cover identifiers returned by GET api/2.0/files/rooms/covers. An empty value leaves the room without a cover, and any other unknown value is rejected as an invalid request. | [optional] [example: bookmark] [nullable] |
| tags | List | The tags to attach to the room, named by their text. A name that is not in the portal tag catalogue yet is added to it, and GET api/2.0/files/tags lists the names already there. | [optional] [example: [Marketing, Q3]] [nullable] |
| logo | LogoRequest | The picture to use as the room logo, which has to be uploaded with POST api/2.0/files/logos first; leaving it out keeps the room on its cover and colour. | [optional] |
Model CustomFilterParameters
The Custom Filter state a spreadsheet is to be put into.
| Name | Type | Description | Notes |
|---|---|---|---|
| enabled | Boolean | The state to reach: true turns the mode on, so that the sorting and filtering each person applies stays visible to that person alone, and drops the others out of a running editing session; false turns it off and makes filtering shared again. | [optional] [example: true] |
Model CustomerConfigDto
The branding of the organization running the portal, as the editor About panel shows it. It is reported on a server installation only.
| Name | Type | Description | Notes |
|---|---|---|---|
| address | String | The postal address from the portal branding settings; empty when none was entered. | [optional] [example: 20A-6 Ernesta Birznieka-Upisha Street, Riga] [nullable] |
| logo | String | The About-panel logo of the organization. | [optional] [example: https://portal.example.com/logo/about.png] [nullable] |
| logoDark | String | The About-panel logo for a dark interface theme. | [optional] [example: https://portal.example.com/logo/about-dark.png] [nullable] |
| String | The contact address from the portal branding settings. | [optional] [example: support@example.com] [nullable] | |
| name | String | The organization name shown in the editor. | [optional] [example: Example Ltd] [nullable] |
| www | String | The website of the organization. | [optional] [example: https://www.example.com] [nullable] |
Model CustomizationConfigDto
How the editor interface is dressed: branding, the buttons that lead back into the portal, and the behaviour of review, mentions and form submission.
| Name | Type | Description | Notes |
|---|---|---|---|
| about | Boolean | Whether the About entry of the editor menu is shown. | [optional] [example: true] |
| customer | CustomerConfigDto | The branding of the organization running the portal. It is filled in on a server installation only and is empty in the cloud. | [optional] |
| anonymous | AnonymousConfigDto | How an anonymous participant is treated in this session. | [optional] |
| feedback | FeedbackConfig | The support link the editor offers behind its feedback button. | [optional] |
| forcesave | Boolean | Whether the editors write intermediate revisions while the document stays open. It is empty when the portal leaves the decision to the editors themselves. | [optional] [example: false] [nullable] |
| goback | GobackConfig | Where the editor returns the user to when they leave the document. It is empty when there is nowhere to go back to, as in an embedded opening. | [optional] |
| review | ReviewConfig | How tracked changes are displayed when the document opens; it depends on whether this session may write. | [optional] |
| logo | LogoConfigDto | The logo the editor shows, in the variants the current layout and file type need. | [optional] |
| mentionShare | Boolean | Whether mentioning a user who cannot yet open the document offers to share it with them, instead of silently notifying nobody. | [optional] [example: true] |
| submitForm | SubmitForm | The submit button of a form: whether it is shown and what it says. | [optional] |
| startFillingForm | StartFillingForm | The button that starts filling out the form. It is empty when this opening offers no such button. | [optional] |
| ai | AIConfig | The AI configuration settings. | [optional] |
Model DarkThemeSettingsType
Possible values:
Base— BaseDark— DarkSystem— System
Model DateToAutoCleanUp
Possible values:
1— One week (OneWeek)2— Two weeks (TwoWeeks)3— One month (OneMonth)4— Thirty days (ThirtyDays)5— Two months (TwoMonths)6— Three months (ThreeMonths)
Model DefaultTemplateItemDto
The blank document configured for one extension.
| Name | Type | Description | Notes |
|---|---|---|---|
| selectedFile | Integer (int32) | The copy stored in the portal that serves as the blank for this extension. A null means no custom blank has been chosen and new documents start from the portal's built-in one; the other fields of the entry are then empty as well. | [optional] [example: 123] [nullable] |
| fileExtension | String | The extension the entry describes, in lower case with the leading dot. It is the value to send back when this blank is replaced or reset. | [required] [example: .docx] [nullable] |
| fileTitle | String | The name the custom blank was copied under, useful for showing which document was chosen. Empty while the built-in blank is in use. | [optional] [example: Company letter.docx] [nullable] |
| lastModified | Date (date-time) | When the custom blank was last changed, in the time zone of the portal. Null while the built-in blank is in use. | [optional] [example: 2026-03-18T11:42:07] [nullable] |
| fileSize | Long (int64) | The size of the custom blank in bytes. Null while the built-in blank is in use. | [optional] [example: 1024] [nullable] |
| viewUrl | String | The address the custom blank can be downloaded from, already carrying the access key of the calling account. Empty while the built-in blank is in use. | [optional] [example: https://example.com/filehandler.ashx?action=download&fileid=123] [nullable] |
Model DefaultTemplateSettingsDto
The blank document the portal creates for each extension it covers.
| Name | Type | Description | Notes |
|---|---|---|---|
| items | List | One entry per extension the portal's built-in template set covers, whether or not a custom blank has been chosen for it, so the list is never empty and its length follows the template set rather than the number of custom blanks. Entries come in the order an interface shows them: text document, spreadsheet, presentation and PDF first, everything else by extension. | [required] [example: [{fileExtension=.docx, fileTitle=Company letter.docx, selectedFile=123}]] [nullable] |
Model DefaultTemplateSettingsRequestDto
The document to use as the blank the portal creates for one extension.
| Name | Type | Description | Notes |
|---|---|---|---|
| selectedFile | DefaultTemplateSettingsRequestDto_selectedFile | [required] | |
| fileExtension | String | The extension the blank is set for, written in lower case with the leading dot. Only the extensions the portal's built-in template set covers are accepted, and GET api/2.0/files/settings/defaulttemplate returns exactly that list; an extension outside it leaves the settings unchanged instead of failing. | [required] [example: .docx] [nullable] |
Model DefaultTemplateSettingsRequestDto.selectedFile
The document to copy as the blank: a number for a file stored in the portal, a string for one in a connected third-party storage. Take the identifier from a folder listing such as GET api/2.0/files/{folderId}; the caller must be allowed to copy that file, and its extension must be the one named below.
Model DefaultTemplateSettingsResetRequestDto
The extension whose custom blank is dropped in favour of the built-in one.
| Name | Type | Description | Notes |
|---|---|---|---|
| fileExtension | String | The extension whose custom blank is dropped, written in lower case with the leading dot. Only the extensions the portal's built-in template set covers are accepted, and GET api/2.0/files/settings/defaulttemplate returns exactly that list; an extension outside it leaves the settings unchanged instead of failing. | [required] [example: .docx] [nullable] |
Model DefaultTemplateSettingsWrapper
The successful API response containing the DefaultTemplateSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | DefaultTemplateSettingsDto | The DefaultTemplateSettingsDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model Delete
The parameters of a single file deletion.
| Name | Type | Description | Notes |
|---|---|---|---|
| deleteAfter | Boolean | When to delete: true waits until the editing session on the file has ended, false deletes at once, pulling the file away from whoever is working on it. | [optional] [example: false] |
| immediately | Boolean | Where the file goes: false moves it to Trash, from where it can be restored, true deletes it for good. Inside a room, where there is no Trash, deletion is always final. | [optional] [example: false] |
Model DeleteBatchRequestDto
The files and folders to delete, and how final the deletion is.
| Name | Type | Description | Notes |
|---|---|---|---|
| returnSingleOperation | Boolean | Which operations the answer carries: true returns the operation this call started and nothing else, false returns every operation of the same kind that the caller has running or unread. When nothing was queued, which happens for an empty selection, true falls back to the full list. | [optional] |
| folderIds | List | The folders to delete, by id, each with everything it contains. A number addresses a folder stored in the portal itself, a string addresses a folder on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
| fileIds | List | The files to delete, by id. A number addresses a file stored in the portal itself, a string addresses a file on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
| deleteAfter | Boolean | Whether the finished operation is still reported: false keeps its final record readable through GET api/2.0/files/fileops until it has been read once, true drops the record as soon as the work is done. It does not postpone the deletion and does not delete anything of its own. | [optional] |
| immediately | Boolean | Where the deleted items go: false moves them to the Trash of the caller, from which they can be restored, true removes them at once and for good. | [optional] |
Model DeleteBatchRequestDto.fileIds
Model DeleteBatchRequestDto.folderIds
Model DeleteFolder
How a folder is to be deleted.
| Name | Type | Description | Notes |
|---|---|---|---|
| deleteAfter | Boolean | Whether the deletion waits for the editing sessions on the contents to end: with true a folder somebody is working in is removed once they are done, with false the deletion starts at once. | [optional] [example: false] |
| immediately | Boolean | Whether the folder is discarded for good instead of being moved to the Trash section: with false it can be restored from Trash, with true it cannot be recovered. Inside a room there is no Trash and the deletion is final either way. | [optional] [example: false] |
Model DeleteRoomRequest
The body of a room deletion request.
| Name | Type | Description | Notes |
|---|---|---|---|
| deleteAfter | Boolean | Carried by the contract but not acted upon: the deletion behaves the same either way, and the record of the finished job is kept until it is read once. | [optional] [example: false] |
Model DeleteVersionBatchRequestDto
The file whose versions are deleted, and the versions to delete.
| Name | Type | Description | Notes |
|---|---|---|---|
| returnSingleOperation | Boolean | Which operations the answer carries: true returns the operation this call started and nothing else, false returns every operation of the same kind that the caller has running or unread. When nothing was queued, which happens for an empty selection, true falls back to the full list. | [optional] |
| deleteAfter | Boolean | Whether the finished operation is still reported: false keeps its final record readable through GET api/2.0/files/fileops until it has been read once, true drops the record as soon as the work is done. It does not postpone the deletion and does not delete anything of its own. | [optional] |
| fileId | Integer (int32) | The file whose history the versions are taken from; only files stored in the portal itself are addressed here. | [required] |
| versions | List (int32) | The version numbers to remove, as reported by GET api/2.0/files/file/{fileId}/history. At least one number has to be sent: an empty list removes the file itself instead of one of its versions. The number of the current version is refused outright, while a number that no longer exists is passed over without a complaint. | [required] [nullable] |
Model DisplayRequestDto
The body of a file settings switch that turns something on or makes it visible.
| Name | Type | Description | Notes |
|---|---|---|---|
| set | Boolean | The state to store for the setting the operation addresses: true enables it or shows what it governs, false disables or hides it. What exactly is affected, and whether the value belongs to the calling account or to the whole portal, are stated by the operation that binds this body. The portal may store a different value than the one sent when another setting overrides it, so read the answer rather than assuming. | [optional] [example: true] |
Model DistributedTaskStatus
Possible values:
0— Created (Created)1— Running (Running)2— Completed (Completed)3— Canceled (Canceled)4— Failted (Failted)
Model DocServiceUrlDto
The document service location as this portal has it configured, together with the editor entry points a client needs in order to open a document.
| Name | Type | Description | Notes |
|---|---|---|---|
| version | String | The editor version the running Document Server reported. It is filled in only when the version was asked for, and comes back empty otherwise. When the Document Server does not answer, a fallback version is reported rather than an error, so a value here is no proof that the server is reachable. | [required] [example: 8.0.1] [nullable] |
| docServiceUrlApi | String | The absolute URL of the editor api script that a client has to load before it can open a document. It is derived from the public Document Server address unless the deployment overrides it separately. | [required] [example: https://documentserver.example.com/web-apps/apps/api/documents/api.js] [nullable] |
| docServiceUrl | String | The public Document Server address a browser loads the editor from. Empty means no document server is configured for this portal, and documents cannot be opened for editing or viewing. | [required] [example: https://documentserver.example.com/] [nullable] |
| docServicePreloadUrl | String | The absolute URL of a page a client may load in advance to warm the editor scripts up. Loading it is optional and changes nothing on the portal. | [required] [example: https://documentserver.example.com/web-apps/apps/api/documents/preload.html] [nullable] |
| docServiceUrlInternal | String | The address the portal uses for its own server-to-server calls to the Document Server. When no private-network address is configured, it repeats the public one. | [required] [example: http://documentserver-internal.local/] [nullable] |
| docServicePortalUrl | String | The address the Document Server is told to call this portal back on. Empty means nothing overrides it and the portal's own resolved address is used. | [required] [example: https://portal.example.com/] [nullable] |
| docServiceSignatureHeader | String | The name of the HTTP header that carries the signature on requests between the portal and the Document Server. The secret itself is not part of the answer, so this only tells a client whether request signing is set up and under which header. | [required] [example: Authorization] [nullable] |
| docServiceSslVerification | Boolean | Whether the portal validates the TLS certificate of the Document Server. False means any certificate is accepted, which is expected only in a test deployment. | [required] [example: true] |
| isDefault | Boolean | Whether every one of these settings is still the one the deployment ships with. False means at least one of the addresses, the signature settings or SSL verification has been overridden for this portal. | [required] [example: true] |
Model DocServiceUrlWrapper
The successful API response containing the DocServiceUrlDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | DocServiceUrlDto | The DocServiceUrlDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model DocumentBuilderTaskDto
The state of a background document building task: how far it has got, how it ended, and the file it produced.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The identifier of the task. It is derived from the portal, the account and the kind of report, so starting the same report again while it runs returns this same value, which is how a resumed poll is told from a newly queued build. | [required] [example: DocumentBuilderTask_1_c2b0e3a4-1f6c-4c2e-9c4f-3a5d8b7e1c22] [nullable] |
| error | String | The message of the failure that stopped the build. It is filled in only for a task that ended in the failed state, and stays empty while the task runs and after it succeeds. | [required] [example: The document service is unavailable] [nullable] |
| percentage | Integer (int32) | How far the build has got, from 0 to 100. It advances in a few coarse steps rather than smoothly, so it is a progress hint and not a measure of the time left; wait on the completion flag instead. | [required] [example: 60] |
| isCompleted | Boolean | True once the task has stopped for any reason, a failure and a cancellation included. It is the field to poll on, and the status tells those outcomes apart. | [required] [example: false] |
| status | DistributedTaskStatus | How the task ended, or that it has not started yet. Read it together with the completion flag: a stopped task can be a finished build, a cancelled one or a failure, and only this field separates them. | [required] [enum: 0, 1, 2, 3, 4] |
| resultFileId | oas_any_type_not_mapped | [required] [nullable] | |
| resultFileName | String | The name the produced file was saved with, extension included. The name is built from the subject of the report and is not unique: a second build adds another file instead of replacing the first. | [required] [example: usage_report.xlsx] [nullable] |
| resultFileUrl | String | The address of the produced file in the document editor, relative to the portal root, so prefix it with the portal address to open it. It stays empty until the build succeeds. | [required] [example: /doceditor?fileid=1234] [nullable] |
Model DocumentBuilderTaskWrapper
The successful API response containing the DocumentBuilderTaskDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | DocumentBuilderTaskDto | The DocumentBuilderTaskDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model DocumentConfigDto
The document itself as the editors address it: what to fetch, under which revision key, and what this caller may do with it.
| Name | Type | Description | Notes |
|---|---|---|---|
| fileType | String | The format the editors treat the content as, without the leading dot. For a file that had to be converted this is the format it was converted to, not the one it is stored under. | [optional] [example: docx] [nullable] |
| info | InfoConfigDto | The facts the editor information panel shows about the document. | [optional] |
| isLinkedForMe | Boolean | Whether the caller opened the original document rather than a link pointing at it, which matters only for formats whose editing is restricted through links. | [optional] [example: false] |
| key | String | Identifies the exact revision to the editors: everyone who receives the same key joins the same co-editing session, and the key changes as soon as the document is saved. | [optional] [example: 1_512_3] [nullable] |
| permissions | PermissionsConfig | What this caller may do inside the editor - edit, comment, review, fill, download, print, copy and chat. | [optional] |
| sharedLinkParam | String | The name of the query parameter that carries the external share key. It is set only when the document was opened through an external link. | [optional] [example: share] [nullable] |
| sharedLinkKey | String | The external share key this opening runs under, empty when the caller opened the document as a portal member. The editors pass it back on every request they make for the document. | [optional] [example: HkQd9nT2] [nullable] |
| referenceData | FileReferenceData | How another spreadsheet names this document in a formula. Pass it to POST api/2.0/files/file/referencedata to resolve such a reference. | [optional] |
| title | String | The name the editors display. When a past version was opened, the moment that version was created is appended to it in brackets. | [optional] [example: Budget 2026.xlsx] [nullable] |
| url | URI (uri) | Where the editors fetch the content. It is addressed to the host the document service can reach, which is not necessarily the address a browser should follow. | [optional] [example: https://portal.example.com/filehandler.ashx?action=download&fileid=512] [nullable] |
| isForm | Boolean | Whether the document is a fillable PDF form. A PDF that the portal has never classified is inspected while the configuration is built, so the answer is trustworthy even for a freshly uploaded file. | [optional] [example: false] |
| options | Options | Extra instructions for the editors, currently the watermark to draw over the document. It is empty when the room sets no watermark. | [optional] |
Model DownloadRequestDto
The files and folders to pack into one archive, together with the formats they are converted to.
| Name | Type | Description | Notes |
|---|---|---|---|
| returnSingleOperation | Boolean | Which operations the answer carries: true returns the operation this call started and nothing else, false returns every operation of the same kind that the caller has running or unread. When nothing was queued, which happens for an empty selection, true falls back to the full list. | [optional] |
| folderIds | List | The folders to pack, by id; everything inside them that the caller may read goes into the archive. A number addresses a folder stored in the portal itself, a string addresses a folder on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
| fileIds | List | The files to pack as they are, by id, without conversion. A number addresses a file stored in the portal itself, a string addresses a file on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
| fileConvertIds | List | The files to convert before they are packed, each named together with the format it is converted to. A file listed here does not have to be repeated in fileIds. | [optional] [nullable] |
Model DownloadRequestDto.fileIds
Model DownloadRequestDto.folderIds
Model DownloadRequestItemDto
One file of a bulk download, together with the format it is converted to.
| Name | Type | Description | Notes |
|---|---|---|---|
| key | DownloadRequestItemDto_key | [required] | |
| value | String | The format the file is converted to before it is packed, as a file extension without a leading dot. | [required] [example: pdf] [nullable] |
| password | String | The password that opens the source file, for a file protected with one; a protected file cannot be converted without it. | [optional] [example: password123] [nullable] |
Model DownloadRequestItemDto.key
The file to convert and pack, by id — a number for a file stored in the portal itself, a string for a file on a connected third-party account.
Model DraftLocationInteger
Where the caller's own filling draft of a form is kept.
| Name | Type | Description | Notes |
|---|---|---|---|
| folderId | Integer (int32) | The folder holding the draft: the sub-folder that the room for filling keeps for drafts of this particular form. | [optional] [example: 10] |
| folderTitle | String | The title of that folder, which the portal takes from the form itself when the form is released for filling. | [optional] [example: Application] [nullable] |
| fileId | Integer (int32) | The draft itself - the copy the caller fills in, not the original form, and the identifier to pass to the file operations while filling. | [optional] [example: 123] |
| fileTitle | String | The title of the draft, which the portal builds from the name of the person filling it and the name of the form. Null when the draft the record points at no longer exists. | [optional] [example: John Doe - Application.pdf] [nullable] |
Model DuplicateRequestDto
The files and folders to duplicate.
| Name | Type | Description | Notes |
|---|---|---|---|
| returnSingleOperation | Boolean | Which operations the answer carries: true returns the operation this call started and nothing else, false returns every operation of the same kind that the caller has running or unread. When nothing was queued, which happens for an empty selection, true falls back to the full list. | [optional] |
| folderIds | List | The folders to duplicate, by id; the copy of each one is created in the folder that already holds it. A number addresses a folder stored in the portal itself, a string addresses a folder on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
| fileIds | List | The files to duplicate, by id; the copy of each one is created in the folder that already holds it. A number addresses a file stored in the portal itself, a string addresses a file on a connected third-party account, and both kinds may be sent in one list. | [optional] [nullable] |
Model DuplicateRequestDto.fileIds
Model DuplicateRequestDto.folderIds
Model EditHistoryArrayWrapper
The successful API response containing the list of EditHistoryDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of EditHistoryDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model EditHistoryAuthor
The person a saved revision of a file, or one single change in it, is attributed to.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The account the revision or the change is attributed to, as the editing service stored it. It is normally the identifier of a portal account; the empty identifier stands for a change nobody could be named for. | [required] [example: 9924256b-447c-4f19-9dbd-8ad8c39e8ff5] [nullable] |
| name | String | The display name of that account as the portal spells it now, which need not be the name that was stored with the revision. An account that cannot be resolved - one removed from the portal, or a change made through an anonymous link - is reported as a guest. | [optional] [example: John Doe] [nullable] |
Model EditHistoryChangesWrapper
One single change inside a saved revision of a file.
| Name | Type | Description | Notes |
|---|---|---|---|
| user | EditHistoryAuthor | The account that made this change, as the editing service reported it; an account it could not name is reported as a guest. | [optional] |
| created | ApiDateTime | When this change was made, written with the offset of the portal's time zone rather than as plain UTC. | [optional] |
| documentSha256 | String | The SHA-256 hash of the document as it stood after this change, where the editing service recorded one, so that a client can check a stored copy against the change it claims to hold. Empty when the change record carries no hash. | [optional] [example: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08] [nullable] |
Model EditHistoryDataDto
Everything an editor needs in order to show what one revision of a file changed.
| Name | Type | Description | Notes |
|---|---|---|---|
| changesUrl | URI (uri) | The address the editor downloads the recorded changes of this revision from. It is filled in only when the portal has a change record for the revision; without it the revision can be shown as a whole document but not as a set of changes. | [optional] [example: https://example.com/changes] [nullable] |
| key | String | The document key of the revision being shown, which the editing service uses to identify it and to reuse the copy it has cached. | [required] [example: doc1] [nullable] |
| previous | EditHistoryUrl | The revision this one is compared against. It arrives together with changesUrl, and when the revision shown is the first one the file ever had, it points at the blank template the file was created from instead of at an earlier revision. | [optional] |
| token | String | The signature over the whole answer, as a JSON Web Token that the editing service verifies before it accepts the addresses in it. Empty when the portal runs without a document-service secret. | [optional] [example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ2ZXJzaW9uIjoxfQ.7HxQ0Zx1] [nullable] |
| url | URI (uri) | The address the content of this revision is served from. It is meant for the editing service and carries its own key, which is valid for a limited time. | [required] [example: https://example.com/file.docx] [nullable] |
| version | Integer (int32) | Echoes the revision that was asked for, so it reports 0 when the request named no version and the current revision was taken. | [required] [example: 1] |
| fileType | String | The format of the revision being shown, as an extension without the leading dot. | [required] [example: docx] [nullable] |
Model EditHistoryDataWrapper
The successful API response containing the EditHistoryDataDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | EditHistoryDataDto | The EditHistoryDataDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model EditHistoryDto
One saved revision of a file, as the editing service recorded it.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The file the revision belongs to; every entry of one history carries the same value. | [optional] [example: 123] |
| key | String | The document key of this revision, which the editing service uses to tell the revisions of a file apart and to reuse the copy it has cached. Hand it back unchanged when asking the editor for this revision. | [optional] [example: doc-key-abc123] [nullable] |
| version | Integer (int32) | The number of the revision, counting up from 1 in the order the revisions were saved. It is the value the operations that show the changes of a revision or restore it expect. | [optional] [example: 2] |
| versionGroup | Integer (int32) | Groups the revisions written by one editing session: entries sharing this number were saved while the same session was open, which is how a client collapses a long list of revisions into the versions a person would recognise. | [optional] [example: 1] |
| user | EditHistoryAuthor | The account that saved the revision. A revision saved by an account that no longer exists, or through an anonymous link, is reported as a guest. | [optional] |
| created | ApiDateTime | When the revision was saved, written with the offset of the portal's time zone rather than as plain UTC. The times of one history are consistent with each other, so order and display the revisions by them. | [optional] |
| changesHistory | String | The change record the editing service stored for this revision, as the raw JSON it was written in, and empty for a revision the portal has no record for - one uploaded as a whole file, for instance. changes is the same record already parsed. | [optional] [example: Changes history text] [nullable] |
| changes | List | The single changes this revision introduced - who made each of them and when - taken from the stored change record. It comes back empty both for a revision whose changes were never recorded and for one whose record is in a format the portal no longer reads, so an empty list is not proof that nothing changed. | [optional] [example: [{user={id=123, name=John Doe}, created=2021-01-01T00:00:00Z}]] [nullable] |
| serverVersion | String | The build of the editing service that wrote the change record of this revision, taken from the record itself; empty when the portal holds no record for the revision. | [optional] [example: 8.0.1] [nullable] |
Model EditHistoryUrl
The address, document key and format of the revision a comparison is made against.
| Name | Type | Description | Notes |
|---|---|---|---|
| key | String | The document key of that revision. When the file has no earlier revision the portal generates a fresh key for the template it falls back to, so the value is not always one an earlier revision ever had. | [optional] [example: doc_v2_20260101] [nullable] |
| url | URI (uri) | The address that revision's content is served from. It is meant for the editing service and carries its own key, which is valid for a limited time. | [optional] [example: https://files.example.com/history/doc_v2_20260101.docx] [nullable] |
| fileType | String | The format of that revision, as an extension without the leading dot. | [optional] [example: docx] [nullable] |
Model EditorConfigurationDto
How the editors behave for this opening: the mode, the language, the interface, and who is editing.
| Name | Type | Description | Notes |
|---|---|---|---|
| callbackUrl | URI (uri) | Where the editors post the document back to when they save it. A client must not call it itself; it is the address the document service uses. | [optional] [example: https://portal.example.com/filehandler.ashx?action=track&fileid=512] [nullable] |
| coEditing | CoEditingConfig | How co-editing starts out for this session and whether the user may switch it in the interface. | [optional] |
| createUrl | String | Where the editor sends the user when they ask for a new document of the same type. It is empty when creating one is not offered here. | [optional] [example: https://portal.example.com/products/files/?action=create&doctype=word] [nullable] |
| customization | CustomizationConfigDto | How the editor interface is dressed for this portal, this document and this layout. | [optional] |
| embedded | EmbeddedConfig | The addresses the framed viewer needs. It is filled in only for the embedded layout. | [optional] |
| encryptionKeys | List | The caller's end-to-end encryption keys, added only when the document lies in a private room, so that the editors can decrypt it in the browser. It is empty everywhere else. | [optional] [nullable] |
| lang | String | The culture the editor interface is shown in, taken from the profile of the caller. | [required] [example: en-US] [nullable] |
| mode | String | edit when this session may write the document, view when it may only read it. | [required] [example: edit] [nullable] |
| modeWrite | Boolean | Whether this session may write; it is what the mode above says in one word. | [optional] [example: true] |
| plugins | PluginsConfig | Which editor plugins are offered. The portal currently offers none, so the list inside comes back empty. | [optional] |
| recent | List | The documents offered in the editor's recent list. It is left out altogether when there is nothing to offer. | [optional] [example: []] [nullable] |
| templates | List | Always empty: the portal no longer passes creation templates through the editor configuration. | [optional] [example: []] [nullable] |
| user | UserConfig | The account the editors attribute changes to. It is empty for an anonymous session opened through an external link, and the editors then ask for a name themselves. | [optional] |
Model EditorToolCallParametersDto
The editor tool call parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| description | String | What the generated fillable form should ask for, in the words the request was made in. | [required] [nullable] |
| topic | String | What the generated presentation is about. | [optional] [nullable] |
| slideCount | String | How many slides to generate, as the request spelled it. | [optional] [nullable] |
| style | String | The visual style the slides should be generated in. | [optional] [nullable] |
Model EditorToolCallStateDto
A generation the editor is expected to run as soon as the document opens, left behind by an AI agent that created the file but not its content.
| Name | Type | Description | Notes |
|---|---|---|---|
| toolName | String | Which generation to run, which also decides the shape of the parameters below. | [required] [example: GenerateDocx] [nullable] |
| parameters | EditorToolCallParametersDto | The arguments of the generation named above. | [required] |
Model EditorType
Possible values:
0— Desktop (Desktop)1— Mobile (Mobile)2— Embedded (Embedded)
Model EmailInvitationDto
The email invitation parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| String (email) | The address of somebody who has no portal account yet. An invitation is sent to it and an account is created once it is accepted, so this is the field to use instead of an account identifier when the person is new to the portal. | [optional] [example: jane.doe@example.com] [maxLength: 255] [nullable] |
Model EmbeddedConfig
The addresses the framed viewer needs. It is reported for the embedded layout only.
| Name | Type | Description | Notes |
|---|---|---|---|
| embedUrl | String | The page to put into the frame. It is empty when the opening carries no external share key, since a framed viewer cannot authenticate a portal member. | [optional] [example: https://portal.example.com/products/files/doceditor?action=embedded&share=HkQd9nT2] [nullable] |
| saveUrl | String | Where the download button of the framed viewer leads. | [optional] [example: https://portal.example.com/filehandler.ashx?action=download&share=HkQd9nT2] [nullable] |
| shareLinkParam | String | The query fragment carrying the external share key, ampersand included, out of which the addresses around it are built. | [optional] [example: &fileid=512&share=HkQd9nT2] [nullable] |
| shareUrl | String | The address behind the share button of the framed viewer, the document opened full-screen for reading. It is empty when the opening carries no external share key. | [optional] [example: https://portal.example.com/products/files/doceditor?action=view&share=HkQd9nT2] [nullable] |
| toolbarDocked | String | Where the framed viewer puts its toolbar. The portal always asks for the top. | [optional] [example: top] [nullable] |
Model EmployeeActivationStatus
Possible values:
0— Not activated (NotActivated)1— Activated (Activated)2— Pending (Pending)4— Auto generated (AutoGenerated)
Model EmployeeDto
The user parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | The user ID. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| displayName | String | The HTML-encoded user's display name formatted according to the default format for the current culture. | [optional] [example: Mike Zanyatski] [nullable] |
| avatar | String | The user avatar. | [optional] [example: https://example.com/avatar.jpg] [nullable] |
| avatarOriginal | String | The user original size avatar. | [optional] [example: https://example.com/avatar_original.jpg] [nullable] |
| avatarMax | String | The user maximum size avatar. | [optional] [example: https://example.com/avatar_max.jpg] [nullable] |
| avatarMedium | String | The user medium size avatar. | [optional] [example: https://example.com/avatar_medium.jpg] [nullable] |
| avatarSmall | String | The user small size avatar. | [optional] [example: https://example.com/avatar_small.jpg] [nullable] |
| profileUrl | String | The user profile URL. | [optional] [example: https://example.com/profile/user123] [nullable] |
| hasAvatar | Boolean | Specifies if the user has an avatar or not. | [optional] [example: true] |
| isAnonim | Boolean | Specifies if the user is anonymous or not. | [optional] [example: false] |
Model EmployeeFullDto
The full list of user parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | The user ID. | [optional] |
| displayName | String | The HTML-encoded user's display name formatted according to the default format for the current culture. | [optional] |
| avatar | String | The user avatar. | [optional] |
| avatarOriginal | String | The user original size avatar. | [optional] |
| avatarMax | String | The user maximum size avatar. | [optional] |
| avatarMedium | String | The user medium size avatar. | [optional] |
| avatarSmall | String | The user small size avatar. | [optional] |
| profileUrl | String | The user profile URL. | [optional] |
| hasAvatar | Boolean | Specifies if the user has an avatar or not. | [optional] |
| isAnonim | Boolean | Specifies if the user is anonymous or not. | [optional] |
| firstName | String | The user first name. | [optional] [nullable] |
| lastName | String | The user last name. | [optional] [nullable] |
| userName | String | The user username. | [optional] [nullable] |
| String (email) | The user email. | [optional] [nullable] | |
| contacts | List | The list of user contacts. | [optional] [nullable] |
| status | EmployeeStatus | The user status. | [optional] [enum: 1, 2, 4, 5, 7] |
| activationStatus | EmployeeActivationStatus | The user activation status. | [optional] [enum: 0, 1, 2, 4] |
| terminated | ApiDateTime | The date when the user account was terminated. | [optional] |
| department | String | The user department. | [optional] [nullable] |
| groups | List | The list of user groups. | [optional] [nullable] |
| location | String | The user location. | [optional] [nullable] |
| notes | String | The user notes. | [optional] [nullable] |
| isAdmin | Boolean | Specifies if the user is an administrator or not. | [optional] |
| isRoomAdmin | Boolean | Specifies if the user is a room administrator or not. | [optional] |
| isLDAP | Boolean | Specifies if the LDAP settings are enabled for the user or not. | [optional] |
| listAdminModules | List | The list of the administrator modules. | [optional] [nullable] |
| isOwner | Boolean | Specifies if the user is a portal owner or not. | [optional] |
| isVisitor | Boolean | Specifies if the user is a portal visitor or not. | [optional] |
| isCollaborator | Boolean | Specifies if the user is a portal collaborator or not. | [optional] |
| cultureName | String | The user culture code. | [optional] [nullable] |
| mobilePhone | String | The user mobile phone number. | [optional] [nullable] |
| mobilePhoneActivationStatus | MobilePhoneActivationStatus | The mobile phone activation status. | [optional] [enum: 0, 1] |
| isSSO | Boolean | Specifies if the SSO settings are enabled for the user or not. | [optional] |
| theme | DarkThemeSettingsType | The user theme settings. | [optional] [enum: Base, Dark, System] |
| quotaLimit | Long (int64) | The user quota limit. | [optional] [nullable] |
| usedSpace | Double (double) | The portal used space of the user. | [optional] [nullable] |
| shared | Boolean | Specifies if the user has access rights. | [optional] [nullable] |
| isCustomQuota | Boolean | Specifies if the user has a custom quota or not. | [optional] [nullable] |
| loginEventId | Integer (int32) | The current login event ID. | [optional] [nullable] |
| authCookieLifetime | Double (double) | The auth cookie lifetime in seconds. | [optional] [nullable] |
| createdBy | EmployeeDto | The user who created the current user. | [optional] |
| registrationDate | ApiDateTime | The user registration date. | [optional] |
| hasPersonalFolder | Boolean | Specifies if the user has a personal folder or not. | [optional] [nullable] |
| tfaAppEnabled | Boolean | Indicates whether the user has enabled two-factor authentication (TFA) using an authentication app. | [optional] [nullable] |
Model EmployeeStatus
Possible values:
1— Active (Active)2— Terminated (Terminated)4— Pending (Pending)5— Default (Default)7— All (All)
Model EncryptionKeyArrayWrapper
The successful API response containing the list of EncryptionKeyDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of EncryptionKeyDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model EncryptionKeyDto
An encryption key pair as the portal reports it: the public half of some member's key, with the encrypted private half filled in only when the pair belongs to the caller.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | Names the pair inside its owner's key set. Pass it back to rotate the pair or to delete it; the all-zero value belongs to a client that stores its keys without sending an identifier. | [optional] [example: 9924256B-447C-4F19-9dbd-8ad8c39e8ff5] |
| userId | UUID (uuid) | The member the pair belongs to. In the key set of a room or of a file this is how the caller tells its own entries, the ones carrying a private half, from those of the other members. | [optional] [example: 9924256B-447C-4F19-9dbd-8ad8c39e8ff5] |
| date | Date (date-time) | When this key material was written. Rotating the pair refreshes it, so it dates the material that is being reported rather than the first appearance of the identifier. | [optional] [example: 2025-01-01T00:00:00] |
| publicKey | String | The public half of the pair, the half a client encrypts file keys with. A pair whose public half is missing is treated as no access and left out of a room's or a file's key set. | [optional] [example: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...] [nullable] |
| privateKeyEnc | String | The private half, encrypted with its owner's password. It is filled in only when the pair belongs to the calling user; on another member's entry it comes back empty, because the private half is not handed out. | [optional] [example: U2FsdGVkX1+Lm3s...] [nullable] |
| cryptoEngineId | String | The crypto engine this material was issued for, as a braced GUID. The engine is portal-wide, so the same value comes back for every key of every member. | [optional] [example: {DC522726-5E0E-43E5-AA02-8EA156BECBC5}] [nullable] |
Model EncryptionKeyRequestDto
The two halves of an encryption key pair to store for the calling user, plus the identifier the pair is kept under.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | Names the pair inside the caller's own key set. The client generates it, and leaving it out means the all-zero GUID, which is the pair a client that never sends an identifier keeps working with. | [optional] [example: 9924256B-447C-4F19-9dbd-8ad8c39e8ff5] |
| publicKey | String | The public half of the pair, as the client's crypto engine produced it and stored verbatim. This is the half handed to the other members of a private room so that they can encrypt file keys for this user. | [optional] [example: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...] [nullable] |
| privateKeyEnc | String | The private half of the pair, encrypted on the client with the user's password before it is sent. The portal stores it as opaque text and cannot decrypt it, so material lost on the client cannot be recovered from here. | [optional] [example: U2FsdGVkX1+Lm3s...] [nullable] |
Model ErrorApiResponse
The error body returned with every failed request.
| Name | Type | Description | Notes |
|---|---|---|---|
| status | Integer (int32) | The response status flag. Always 1 on an error, as opposed to 0 on success. | [optional] |
| statusCode | Integer (int32) | The HTTP status code of the response, repeated in the body. | [optional] |
| error | ErrorApiResponse_error | [optional] |
Model ErrorApiResponse.error
What went wrong.
| Name | Type | Description | Notes |
|---|---|---|---|
| message | String | The human-readable error message. | [optional] |
| type | String | The .NET type of the underlying exception. Only sent when stack traces are enabled. | [optional] |
| stack | String | The stack trace of the underlying exception. Only sent when stack traces are enabled. | [optional] |
| hresult | Integer (int32) | The HRESULT of the underlying exception. Only sent when stack traces are enabled. | [optional] |
Model ExternalDbSyncFormResultDto
What happened to one original form while the room was being exported to the external database.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The file of the original form whose collected data was exported. It is the form itself, not one of the filled copies, so the same id can be read with the file operations of the portal. | [optional] [example: 42] |
| title | String | The name of that form file at the moment of the export. It is empty when the form file no longer exists, which is also the case in which the export of that entry fails. | [optional] [example: Application.pdf] [nullable] |
| success | Boolean | Whether the data of this form reached the external database. One rejected form does not stop the others, so a finished job can hold both successful and failed entries. | [optional] [example: true] |
| error | String | Why this form was not exported. It is empty for a successful entry, and for a failed one it carries either the message of the underlying failure or the generic export error of the portal. | [optional] [example: Connection refused] [nullable] |
Model ExternalDbSyncTaskDto
The state of the job that exports the collected form data of a form filling room into the external database of the portal.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The identifier of the job, which stays the same while a job for this room exists and is worth quoting when a failure has to be traced in the portal logs. Polling is done by room, so the value is not needed to read the state again. | [required] [example: ExternalDbSyncTask_1_42] [nullable] |
| error | String | The message of a failure that stopped the whole job. It is empty while the job is running and after a job that ended without such a failure; a job that finished with individual forms rejected reports those in forms and leaves this field empty. | [optional] [example: Connection refused] [nullable] |
| percentage | Integer (int32) | How much of the work is done, from 0 to 100. It advances as the forms of the room are processed one by one, so it is a usable progress indicator for a room with many forms and jumps straight to the end for a room with one. | [required] [example: 75] |
| isCompleted | Boolean | Whether the job has ended. It is set both for a job that finished its work and for one that stopped on an error, so this is the flag to poll for, and status and error are what tell the two apart. | [required] [example: false] |
| status | DistributedTaskStatus | How the job ended, or how far it has got: queued, running, finished, cancelled or failed. It is the only field that separates a successful end from a failed one once isCompleted is set. | [required] [enum: 0, 1, 2, 3, 4] |
| forms | List | The outcome for every original form of the room, one entry each. The list is empty while the job is running and is filled in only when the job ends, so it is what to read after isCompleted turns true; it stays empty for a room that holds no forms at all. | [required] [example: [{id=42, title=Application.pdf, success=true, error=null}]] [nullable] |
Model ExternalDbSyncTaskWrapper
The successful API response containing the ExternalDbSyncTaskDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ExternalDbSyncTaskDto | The ExternalDbSyncTaskDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model ExternalShareDto
The outcome of validating an external share link and the entry it points at.
| Name | Type | Description | Notes |
|---|---|---|---|
| status | Status | How validating the link went. It is the first field to read: a refused link is reported here with the answer still arriving as a success. A link that resolved describes both the entry and the link, one that is waiting for its password describes only the entry, and one that failed outright leaves the rest of the object empty. | [required] [enum: 0, 1, 2, 3, 4, 5] |
| id | String | The identifier of the room, folder or file the link points at, always rendered as a string even where the portal stores it as a number. It is null when the link could not be resolved. | [optional] [example: 42] [nullable] |
| title | String | The title of the entry the link points at, suitable for showing to the visitor before they are let in. It is null when the link could not be resolved. | [optional] [example: Project documents] [nullable] |
| type | FileEntryType | Whether the link points at a folder - a room counts as one - or at a single file. It is null when the link could not be resolved. | [optional] [enum: 1, 2] |
| tenantId | Integer (int32) | The portal the link belongs to, which matters for a client that works with more than one. It stays 0 for a link that did not resolve. | [required] [example: 1] |
| entityId | String | The identifier of the entry that was asked about through the request's file or folder parameter, echoed back once it was found under the link's target. It is null when nothing was asked about, or when the entry lies outside what the link opens. | [optional] [example: 9] [nullable] |
| entityTitle | String | The title of that entry, null under the same conditions as its identifier. | [optional] [example: Contract.docx] [nullable] |
| entityType | FileEntryType | Whether that entry is a folder or a file, null under the same conditions as its identifier. | [optional] [enum: 1, 2] |
| isRoom | Boolean | True when the link opens a whole room rather than one entry inside it. It is null for a link to a file and for a link that did not resolve. | [optional] [example: true] [nullable] |
| shared | Boolean | True when the entry now sits in the calling account's own lists - it was already shared with that account, or resolving the link has just put it there. It stays false for a visitor browsing without an account, who reaches the entry through the link alone. | [required] [example: true] |
| linkId | UUID (uuid) | The link the token belongs to, which is also the subject under which the link appears among the sharing rights of the entry. It is an empty identifier when the link did not resolve. | [required] [example: b3a1f0c7-5d2e-4a19-9f38-71c6e0d4b852] |
| isAuthenticated | Boolean | Whether the request carried a signed-in account. It says nothing about that account's rights on the entry, so it must not be read as permission - it is false for every anonymous visitor and true for any member, even one who is a stranger to the room. | [required] [example: true] |
| isRoomMember | Boolean | Whether the signed-in caller already has rights of their own on the room that holds the entry, as opposed to reaching it through this link. It is false for an anonymous visitor and for a member who has never been invited. | [optional] [example: false] |
Model ExternalShareRequestParam
The password that unlocks a protected external share link.
| Name | Type | Description | Notes |
|---|---|---|---|
| password | String | The password chosen by the member who shared the entry, spelled exactly as they typed it. It is compared against the stored value and never returned back; a mismatch is reported through the answer's status instead of an error. | [optional] [example: p@ssw0rd] [nullable] |
Model ExternalShareWrapper
The successful API response containing the ExternalShareDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ExternalShareDto | The ExternalShareDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model ExternalSharingSettingsDto
The external sharing policy of the portal as it now stands.
| Name | Type | Description | Notes |
|---|---|---|---|
| externalShare | Boolean | Whether links that open a file or a room without a portal account may be created. While it is false the portal also reports sharing on social networks as off and the default link type as internal, whatever was asked for. | [optional] [example: true] |
| defaultShareLinkInternal | Boolean | The kind of link the portal offers first: true means a link only accounts of this portal can open, false one that anyone holding it can open. | [optional] [example: false] |
| externalShareApplyToDocuments | Boolean | Whether the restriction covers personal documents. It only has an effect while external sharing is off, so a true here with sharing allowed restricts nothing. | [optional] [example: true] |
| externalShareApplyToRooms | Boolean | Whether the restriction covers rooms, including the creation of new public ones. It only has an effect while external sharing is off. | [optional] [example: true] |
| blockExistingLinksOnRestrict | Boolean | Whether links created before the restriction stop opening as well. With false they keep working and only new ones are refused. | [optional] [example: true] |
Model ExternalSharingSettingsRequestDto
The complete external sharing policy of the portal. Every field is written, so an omitted one is stored as false.
| Name | Type | Description | Notes |
|---|---|---|---|
| externalShare | Boolean | Whether links that open a file or a room without a portal account may be created at all. This is the master switch of the policy: while it is false the portal keeps the default link type internal, turns sharing on social networks off, and applies the three restriction fields below. | [optional] [example: true] |
| defaultShareLinkInternal | Boolean | The kind of link offered first when a new one is created: true offers a link only accounts of this portal can open, false one that anyone holding it can open. The portal keeps it at true while external sharing is switched off. | [optional] [example: false] |
| externalShareApplyToDocuments | Boolean | Whether the restriction reaches personal documents: with true, no external link can be created for an entry in the caller's own documents while external sharing is off. It has no effect while external sharing is allowed. | [optional] [example: true] |
| externalShareApplyToRooms | Boolean | Whether the restriction reaches rooms: with true, no external link can be created for a room or its content while external sharing is off, and a new room cannot be made public. It has no effect while external sharing is allowed. | [optional] [example: true] |
| blockExistingLinksOnRestrict | Boolean | What happens to the links that already exist once external sharing is switched off: with true they stop opening for the sections named above, with false they keep working and only new ones are refused. This is the field that changes access to data that is already shared. | [optional] [example: true] |
Model ExternalSharingSettingsWrapper
The successful API response containing the ExternalSharingSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ExternalSharingSettingsDto | The ExternalSharingSettingsDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FeedbackConfig
The settings for the Feedback & Support menu button.
| Name | Type | Description | Notes |
|---|---|---|---|
| url | String | The absolute URL to the website address which will be opened when clicking the Feedback & Support menu button. | [optional] [example: https://portal.example.com/support] [nullable] |
| visible | Boolean | Whether the support button is shown. The portal always asks for it to be shown. | [optional] [example: true] |
Model FieldError
Field specific validation error
| Name | Type | Description | Notes |
|---|---|---|---|
| field | String | The name of the field that failed validation | [optional] [example: policy_url] |
| code | String | Error code for localization purposes | [optional] [example: InvalidPolicyUrl] |
| message | String | Human readable error message | [optional] [example: policy url is expected to be passed as url] |
Model FileConflictResolveType
Possible values:
Skip— SkipOverwrite— OverwriteDuplicate— Duplicate
Model FileDtoInteger
A stored file as the calling account sees it: where it lives, which revision this is, how it can be opened and what the portal is currently doing with it.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The name shown for the entry. For a file it carries the extension, which is how the format is recognised, and for a room it is the room name. | [optional] |
| access | FileShare | The level the calling account holds on this entry, resolved from its own rights, the groups it belongs to and any link it came in through. It is the level itself, not what the account may do with it - the action flags below answer that. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| sharedBy | EmployeeDto | Who gave the calling account the access it is using. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| ownedBy | EmployeeDto | Who owns the place the entry is shared from - the creator of the room it lies in, or of the personal section that holds it. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| shared | Boolean | Whether at least one external link exists for the entry, whichever kind. It says nothing about accounts and groups - those are counted by the flag for members below. | [optional] |
| sharedForUser | Boolean | Whether at least one account or group has been given rights on the entry directly, as opposed to reaching it through a link or through the room around it. | [optional] |
| sharedExternal | Boolean | Whether one of the entry's links is open to people outside the portal, as opposed to a link that only its own members can follow. This is the flag to watch when the concern is who can reach the content from outside. | [optional] |
| parentShared | Boolean | Whether the entry is reachable because the room or folder around it is shared, rather than through rights of its own. A copy or a move takes the entry out of that scope. | [optional] |
| shortWebUrl | URI (uri) | A shortened address that opens the entry through the link it is being read with. It is an empty string whenever no link applies, which is the usual case for a member browsing their own rooms. | [optional] |
| created | ApiDateTime | When the entry was created, written with the offset of the portal's time zone. For a file restored from an older version this is still the moment the file first appeared. | [optional] |
| createdBy | EmployeeDto | Who created the entry. It is null for a caller without an account, who is told nothing about the portal's members. | [optional] |
| updated | ApiDateTime | When the entry last changed, written with the offset of the portal's time zone. It is never reported as earlier than the creation moment, so the two can be compared safely. | [optional] |
| autoDelete | ApiDateTime | When the entry will disappear on its own, written with the offset of the portal's time zone. It is filled in only where a removal is actually scheduled - something in the trash while the portal cleans it up automatically, or a guest's own documents - so a null means nothing is scheduled rather than that the entry is permanent. | [optional] |
| rootFolderType | FolderType | The section the entry ultimately belongs to, which is what tells a personal document from one inside a room, from a template and from something in the trash or the archive. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| parentRoomType | FolderType | The kind of room the entry lies in, which decides what the room allows - filling forms, public links, indexing. It is null for an entry that is not inside a room at all. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| updatedBy | EmployeeDto | Who changed the entry last. It is null for a caller without an account. | [optional] |
| providerItem | Boolean | Set when the entry is stored on a connected third-party account rather than on the portal, and null when it is stored on the portal. Such an entry is identified by a string rather than a number, and some operations skip it. | [optional] |
| providerKey | String | Which third-party service holds the entry, matching the keys accepted by the third-party operations. It is null for an entry stored on the portal. | [optional] |
| providerId | Integer (int32) | The connected account the entry comes from, for telling apart two connections to the same service. It is null for an entry stored on the portal. | [optional] |
| order | String | The place of the entry in a room where the members arrange the content themselves, given as the position of the entry preceded by the positions of the folders leading to it, separated by dots. It is empty when nothing has been arranged. | [optional] |
| isFavorite | Boolean | Set when the calling account has marked the entry as a favorite, which is what puts it into the favorites listing. For a file that is not marked it is null rather than false. | [optional] |
| fileEntryType | FileEntryType | Tells a folder from a file, and so which of the two shapes the rest of the object has. A room is reported as a folder here. | [optional] [enum: 1, 2] |
| id | Integer (int32) | The identifier to pass back to the other operations of this entry. It is a number for storage on the portal and a string for a connected third-party account, and it is unique only within its own kind, so files and folders may carry the same value. | [optional] |
| rootFolderId | Integer (int32) | The section the entry ultimately lies in, as an identifier that can be listed like any other folder. For an entry inside a room this is the rooms section, not the room. | [optional] |
| originId | Integer (int32) | The folder the entry was deleted from, which is where restoring it puts it back. It is left out of the answer unless the entry is in the trash. | [optional] |
| originRoomId | Integer (int32) | The room the entry was deleted from, left out of the answer for anything that was not deleted out of a room. | [optional] |
| originTitle | String | The name of the folder the entry was deleted from, for showing where it would be restored to. It is null for an entry that is not in the trash. | [optional] |
| originRoomTitle | String | The name of the room the entry was deleted from, null for anything that was not deleted out of a room. | [optional] |
| canShare | Boolean | Whether the calling account may change who has access to the entry, and so whether offering a sharing dialog for it makes sense. It is false in rooms whose access is fixed by the room itself, such as a private one, even for its manager. | [optional] |
| shareSettings | FileEntryDtoInteger_allOf_shareSettings | [optional] [nullable] | |
| security | FileEntryDtoInteger_allOf_security | [optional] [nullable] | |
| availableShareRights | FileEntryDtoInteger_allOf_availableShareRights | [optional] [nullable] | |
| requestToken | String | The token of the link the entry is being read through, which is the value the external-share operations expect and which also has to be carried by the download and preview addresses. It is null whenever the entry is not being read through a link. | [optional] |
| external | Boolean | Set when the link being used was made for this very entry, and false when the entry is reached through a link to the room around it. It is null when no link is involved. | [optional] |
| expirationDate | ApiDateTime | When the link being used stops working, written with the offset of the portal's time zone. It is null for a link that never expires and whenever no link is involved. | [optional] |
| isLinkExpired | Boolean | Set when the link being used has already passed its expiration date, which is why the entry cannot be opened even though it is described here. It is null when no link is involved. | [optional] |
| folderId | Integer (int32) | The folder the file is stored in. When the file was reached through a share and the caller cannot open its real parent, the identifier of the Shared with me section is reported instead, so this is where the file is visible rather than where it physically sits. | [optional] |
| version | Integer (int32) | The revision this entry describes. It starts at 1 and moves to the next number each time new content is stored over the file, except for an editing session opened against the file itself, which replaces the content and keeps the number. GET api/2.0/files/file/{fileId}/history lists them all. | [optional] |
| versionGroup | Integer (int32) | Groups revisions that belong together, which is how a history can fold a long editing session into one entry: versions saved inside one session share this number, and an upload over the file starts a new group. | [optional] |
| contentLength | String | The size already formatted for display, with a unit and the separators of the caller's language. Read pureContentLength for a number to calculate with. | [optional] [nullable] |
| pureContentLength | Long (int64) | The size of the stored content in bytes, and null for an empty file. | [optional] [nullable] |
| fileStatus | FileStatus | What the portal is currently doing with the file and how the caller stands towards it - open in the editor, unread, being converted, and so on. The value is a bit mask that combines those states, so a file can report a number that matches none of the published members on its own. | [optional] [enum: 0, 1, 2, 4, 8, 16, 32, 64, 128, 256] |
| editingBy | Map | The accounts that have the file open in the editor at this moment, as account identifier to display name, and empty when nobody has. The all-zero identifier stands for people who came in through an external link without signing in, and its name carries their number in brackets when there is more than one. | [optional] |
| mute | Boolean | Not a property of the file at all: it repeats, inverted, the calling account's own switch for new-item badges, so it is the same in every entry of one answer. True means that account has badges turned off. | [optional] |
| viewUrl | URI (uri) | The address that returns the bytes of the file - a download, in spite of the name; webUrl is the address a person opens. When the file was reached through an external link the address carries the key of that link, so it keeps working without signing in. | [optional] [nullable] |
| webUrl | URI (uri) | The page that opens the file in a browser: the editor for a format the portal edits, the media viewer for pictures, audio and video, and the download address for a format it cannot show at all. | [optional] [nullable] |
| fileType | FileType | The broad kind of content, worked out from the extension, which is what a client uses to pick an icon or a viewer without parsing fileExst itself. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11] |
| fileExst | String | The extension of the stored file, leading dot included and always lower case. For a format the portal keeps in a converted shape this is the extension it is served under, not the one it was uploaded with. | [optional] [nullable] |
| comment | String | The note kept with this revision. The portal writes it itself for revisions it creates, an upload over an existing file among them, and an editor stores the note a person typed when saving a version. | [optional] [nullable] |
| encrypted | Boolean | True for a file in a private room, whose content the server never sees and which therefore cannot be converted or taken over by an upload. Null, rather than false, for an ordinary file. | [optional] [nullable] |
| thumbnailUrl | URI (uri) | The address of the generated preview image. It is filled in only while thumbnailStatus says the preview has been created, and it carries a suffix that changes with the file, so an image cached for an earlier revision is not reused. | [optional] [nullable] |
| thumbnailStatus | Thumbnail | How far the preview image has got. Only the created state means thumbnailUrl holds an address; the others mean there is none, either because it is still being produced or because this format has no preview. | [optional] [enum: 0, 1, 2, 3, 4] |
| locked | Boolean | True while the file is held under a lock that stops anyone but its holder from editing it, and null rather than false when there is no lock. lockedBy names the holder unless the caller is the holder. | [optional] [nullable] |
| lockedBy | String | The display name of the account holding the lock, and null when the caller holds it - so locked true together with no name here means the lock is the caller's own. | [optional] [nullable] |
| hasDraft | Boolean | For a fillable PDF form, whether the caller already has a filling draft of it, in which case draftLocation says where that draft lives. Null for anything that is not a form. | [optional] [nullable] |
| formFillingStatus | FormFillingStatus | How far the filling of this form has got for the calling account, and whose turn it is now. It is worked out only inside a virtual data room, where filling runs in steps; everywhere else it stays at the none value. | [optional] [enum: 0, 1, 2, 3, 4, 5] |
| isForm | Boolean | Whether the file is a PDF, and so offered as a fillable form. It is null for any other file type. | [optional] [nullable] |
| customFilterEnabled | Boolean | True while a spreadsheet is in the mode where each person sorts and filters their own view without changing what the others see, and null rather than false when it is not. | [optional] [nullable] |
| customFilterEnabledBy | String | The display name of the account that turned that mode on, and null when the caller turned it on themselves. | [optional] [nullable] |
| startFilling | Boolean | For a form in a room for filling, whether it has been released for filling; until then it is still being prepared and only the people running the room work with it. Null for a file this does not apply to. | [optional] [nullable] |
| isFillingPreparing | Boolean | True during the short window in which a released form is still being written out by the editor. Neither filling nor editing is accepted while it lasts, so a client should wait and read the file again. | [optional] [nullable] |
| inProcessFolderId | Integer (int32) | Left empty by the portal: the folder holding the caller's draft is reported in draftLocation instead. | [optional] [nullable] |
| inProcessFolderTitle | String | Left empty by the portal, like the identifier beside it; the draft's folder is named in draftLocation. | [optional] [nullable] |
| resultsFolderId | Integer (int32) | The folder that collects the completed copies of this form. It is filled in only for the original form of a room for filling, and only for a caller allowed to work with that form; null everywhere else. | [optional] [nullable] |
| draftLocation | DraftLocationInteger | Where the caller's own filling draft of this form is kept. Null when there is no draft yet, which is the same thing hasDraft reports. | [optional] |
| viewAccessibility | FileDtoInteger_allOf_viewAccessibility | [optional] [nullable] | |
| lastOpened | ApiDateTime | The moment the caller last opened the file. It is kept per account and is what orders the Recent section, so it is null for a file this account has never opened. Written with the offset of the portal's time zone. | [optional] |
| expired | ApiDateTime | The moment the file falls under the lifetime rule of the room holding it and is removed. It is counted from the first revision rather than the latest one, so editing a file does not postpone it, and it is null when the room sets no lifetime. Written with the offset of the portal's time zone. | [optional] |
| vectorizationStatus | VectorizationStatus | How far the indexing of the file's content for AI search has got. It is null for a file that has never been queued for indexing, which is every file while the feature is off for the portal. | [optional] [enum: 0, 1, 2] |
| externalDbTableName | String | The table collecting the submitted values of this form in the external database configured for its room. The field is left out of the answer entirely when the form has no such table. | [optional] [nullable] |
| dimensions | Size | The pixel size of the picture, measured by reading the stored file rather than taken from any stored metadata. Null for anything that is not a picture the portal can show, and also when the file could not be read. | [optional] |
Model FileDtoInteger.viewAccessibility
Which ways of opening this format the portal supports at all - its own editor, the picture viewer, the media player and so on. It answers whether the format can be shown, not whether this account may do it; rights are reported in security.
| Name | Type | Description | Notes |
|---|---|---|---|
| ImageView | Boolean | [optional] | |
| MediaView | Boolean | [optional] | |
| WebView | Boolean | [optional] | |
| WebEdit | Boolean | [optional] | |
| WebReview | Boolean | [optional] | |
| WebCustomFilterEditing | Boolean | [optional] | |
| WebRestrictedEditing | Boolean | [optional] | |
| WebComment | Boolean | [optional] | |
| CanConvert | Boolean | [optional] | |
| MustConvert | Boolean | [optional] |
Model FileEncryptionInfoDto
The keys the calling account needs in order to open one file of an end-to-end encrypted private room.
| Name | Type | Description | Notes |
|---|---|---|---|
| userKeys | List | The key pairs of the calling account, never those of the other people in the room. The private half of each pair is stored encrypted with that person's own password and has to be decrypted on the client. An empty list means the account has generated no key pair yet, and until it does no file key can be issued to it. | [optional] [example: [{id=9924256B-447C-4F19-9dbd-8ad8c39e8ff5, userId=9924256B-447C-4F19-9dbd-8ad8c39e8ff5, date=2025-01-01T00:00:00, publicKey=-----BEGIN PUBLIC KEY----- MIIBIjANBg..., privateKeyEnc=U2FsdGVkX1+Lm3s..., cryptoEngineId=defaultCryptoEngine}]] [nullable] |
| fileKeys | List | The keys of this file that were issued to the calling account, each naming the public key it was encrypted for so that the client can pick the matching private half. An empty list means the file has not been shared with this account rather than that the file is unencrypted. | [optional] [example: [{userId=9924256B-447C-4F19-9dbd-8ad8c39e8ff5, publicKeyId=9924256B-447C-4F19-9dbd-8ad8c39e8ff5, privateKeyEnc=U2FsdGVkX1+Lm3s..., tenantId=1, fileId=9846, createOn=2025-01-01T00:00:00}]] [nullable] |
Model FileEncryptionInfoWrapper
The successful API response containing the FileEncryptionInfoDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FileEncryptionInfoDto | The FileEncryptionInfoDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileEntryBaseArrayWrapper
The successful API response containing the list of FileEntryBaseDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FileEntryBaseDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileEntryBaseDto
What every file and folder in an answer has in common; the concrete shape is a file or a folder, told apart by the entry type.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The name shown for the entry. For a file it carries the extension, which is how the format is recognised, and for a room it is the room name. | [optional] [example: Some title.txt] [nullable] |
| access | FileShare | The level the calling account holds on this entry, resolved from its own rights, the groups it belongs to and any link it came in through. It is the level itself, not what the account may do with it - the action flags below answer that. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| sharedBy | EmployeeDto | Who gave the calling account the access it is using. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| ownedBy | EmployeeDto | Who owns the place the entry is shared from - the creator of the room it lies in, or of the personal section that holds it. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| shared | Boolean | Whether at least one external link exists for the entry, whichever kind. It says nothing about accounts and groups - those are counted by the flag for members below. | [optional] [example: false] |
| sharedForUser | Boolean | Whether at least one account or group has been given rights on the entry directly, as opposed to reaching it through a link or through the room around it. | [optional] [example: false] |
| sharedExternal | Boolean | Whether one of the entry's links is open to people outside the portal, as opposed to a link that only its own members can follow. This is the flag to watch when the concern is who can reach the content from outside. | [optional] [example: false] |
| parentShared | Boolean | Whether the entry is reachable because the room or folder around it is shared, rather than through rights of its own. A copy or a move takes the entry out of that scope. | [optional] [example: false] |
| shortWebUrl | URI (uri) | A shortened address that opens the entry through the link it is being read with. It is an empty string whenever no link applies, which is the usual case for a member browsing their own rooms. | [optional] [example: http://localhost/s/abc123] [nullable] |
| created | ApiDateTime | When the entry was created, written with the offset of the portal's time zone. For a file restored from an older version this is still the moment the file first appeared. | [optional] |
| createdBy | EmployeeDto | Who created the entry. It is null for a caller without an account, who is told nothing about the portal's members. | [optional] |
| updated | ApiDateTime | When the entry last changed, written with the offset of the portal's time zone. It is never reported as earlier than the creation moment, so the two can be compared safely. | [optional] |
| autoDelete | ApiDateTime | When the entry will disappear on its own, written with the offset of the portal's time zone. It is filled in only where a removal is actually scheduled - something in the trash while the portal cleans it up automatically, or a guest's own documents - so a null means nothing is scheduled rather than that the entry is permanent. | [optional] |
| rootFolderType | FolderType | The section the entry ultimately belongs to, which is what tells a personal document from one inside a room, from a template and from something in the trash or the archive. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| parentRoomType | FolderType | The kind of room the entry lies in, which decides what the room allows - filling forms, public links, indexing. It is null for an entry that is not inside a room at all. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| updatedBy | EmployeeDto | Who changed the entry last. It is null for a caller without an account. | [optional] |
| providerItem | Boolean | Set when the entry is stored on a connected third-party account rather than on the portal, and null when it is stored on the portal. Such an entry is identified by a string rather than a number, and some operations skip it. | [optional] [example: true] [nullable] |
| providerKey | String | Which third-party service holds the entry, matching the keys accepted by the third-party operations. It is null for an entry stored on the portal. | [optional] [example: google-drive] [nullable] |
| providerId | Integer (int32) | The connected account the entry comes from, for telling apart two connections to the same service. It is null for an entry stored on the portal. | [optional] [example: 1] [nullable] |
| order | String | The place of the entry in a room where the members arrange the content themselves, given as the position of the entry preceded by the positions of the folders leading to it, separated by dots. It is empty when nothing has been arranged. | [optional] [example: 1.3.2] [nullable] |
| isFavorite | Boolean | Set when the calling account has marked the entry as a favorite, which is what puts it into the favorites listing. For a file that is not marked it is null rather than false. | [optional] [example: true] [nullable] |
| fileEntryType | FileEntryType | Tells a folder from a file, and so which of the two shapes the rest of the object has. A room is reported as a folder here. | [optional] [enum: 1, 2] |
Model FileEntryBaseWrapper
The successful API response containing the FileEntryBaseDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FileEntryBaseDto | The FileEntryBaseDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileEntryDtoInteger
The part of a file or folder that depends on how the entry is identified: by a number on the portal, or by a string on a connected third-party account.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The name shown for the entry. For a file it carries the extension, which is how the format is recognised, and for a room it is the room name. | [optional] |
| access | FileShare | The level the calling account holds on this entry, resolved from its own rights, the groups it belongs to and any link it came in through. It is the level itself, not what the account may do with it - the action flags below answer that. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| sharedBy | EmployeeDto | Who gave the calling account the access it is using. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| ownedBy | EmployeeDto | Who owns the place the entry is shared from - the creator of the room it lies in, or of the personal section that holds it. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| shared | Boolean | Whether at least one external link exists for the entry, whichever kind. It says nothing about accounts and groups - those are counted by the flag for members below. | [optional] |
| sharedForUser | Boolean | Whether at least one account or group has been given rights on the entry directly, as opposed to reaching it through a link or through the room around it. | [optional] |
| sharedExternal | Boolean | Whether one of the entry's links is open to people outside the portal, as opposed to a link that only its own members can follow. This is the flag to watch when the concern is who can reach the content from outside. | [optional] |
| parentShared | Boolean | Whether the entry is reachable because the room or folder around it is shared, rather than through rights of its own. A copy or a move takes the entry out of that scope. | [optional] |
| shortWebUrl | URI (uri) | A shortened address that opens the entry through the link it is being read with. It is an empty string whenever no link applies, which is the usual case for a member browsing their own rooms. | [optional] |
| created | ApiDateTime | When the entry was created, written with the offset of the portal's time zone. For a file restored from an older version this is still the moment the file first appeared. | [optional] |
| createdBy | EmployeeDto | Who created the entry. It is null for a caller without an account, who is told nothing about the portal's members. | [optional] |
| updated | ApiDateTime | When the entry last changed, written with the offset of the portal's time zone. It is never reported as earlier than the creation moment, so the two can be compared safely. | [optional] |
| autoDelete | ApiDateTime | When the entry will disappear on its own, written with the offset of the portal's time zone. It is filled in only where a removal is actually scheduled - something in the trash while the portal cleans it up automatically, or a guest's own documents - so a null means nothing is scheduled rather than that the entry is permanent. | [optional] |
| rootFolderType | FolderType | The section the entry ultimately belongs to, which is what tells a personal document from one inside a room, from a template and from something in the trash or the archive. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| parentRoomType | FolderType | The kind of room the entry lies in, which decides what the room allows - filling forms, public links, indexing. It is null for an entry that is not inside a room at all. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| updatedBy | EmployeeDto | Who changed the entry last. It is null for a caller without an account. | [optional] |
| providerItem | Boolean | Set when the entry is stored on a connected third-party account rather than on the portal, and null when it is stored on the portal. Such an entry is identified by a string rather than a number, and some operations skip it. | [optional] |
| providerKey | String | Which third-party service holds the entry, matching the keys accepted by the third-party operations. It is null for an entry stored on the portal. | [optional] |
| providerId | Integer (int32) | The connected account the entry comes from, for telling apart two connections to the same service. It is null for an entry stored on the portal. | [optional] |
| order | String | The place of the entry in a room where the members arrange the content themselves, given as the position of the entry preceded by the positions of the folders leading to it, separated by dots. It is empty when nothing has been arranged. | [optional] |
| isFavorite | Boolean | Set when the calling account has marked the entry as a favorite, which is what puts it into the favorites listing. For a file that is not marked it is null rather than false. | [optional] |
| fileEntryType | FileEntryType | Tells a folder from a file, and so which of the two shapes the rest of the object has. A room is reported as a folder here. | [optional] [enum: 1, 2] |
| id | Integer (int32) | The identifier to pass back to the other operations of this entry. It is a number for storage on the portal and a string for a connected third-party account, and it is unique only within its own kind, so files and folders may carry the same value. | [optional] |
| rootFolderId | Integer (int32) | The section the entry ultimately lies in, as an identifier that can be listed like any other folder. For an entry inside a room this is the rooms section, not the room. | [optional] |
| originId | Integer (int32) | The folder the entry was deleted from, which is where restoring it puts it back. It is left out of the answer unless the entry is in the trash. | [optional] |
| originRoomId | Integer (int32) | The room the entry was deleted from, left out of the answer for anything that was not deleted out of a room. | [optional] |
| originTitle | String | The name of the folder the entry was deleted from, for showing where it would be restored to. It is null for an entry that is not in the trash. | [optional] [nullable] |
| originRoomTitle | String | The name of the room the entry was deleted from, null for anything that was not deleted out of a room. | [optional] [nullable] |
| canShare | Boolean | Whether the calling account may change who has access to the entry, and so whether offering a sharing dialog for it makes sense. It is false in rooms whose access is fixed by the room itself, such as a private one, even for its manager. | [optional] |
| shareSettings | FileEntryDtoInteger_allOf_shareSettings | [optional] [nullable] | |
| security | FileEntryDtoInteger_allOf_security | [optional] [nullable] | |
| availableShareRights | FileEntryDtoInteger_allOf_availableShareRights | [optional] [nullable] | |
| requestToken | String | The token of the link the entry is being read through, which is the value the external-share operations expect and which also has to be carried by the download and preview addresses. It is null whenever the entry is not being read through a link. | [optional] [nullable] |
| external | Boolean | Set when the link being used was made for this very entry, and false when the entry is reached through a link to the room around it. It is null when no link is involved. | [optional] [nullable] |
| expirationDate | ApiDateTime | When the link being used stops working, written with the offset of the portal's time zone. It is null for a link that never expires and whenever no link is involved. | [optional] |
| isLinkExpired | Boolean | Set when the link being used has already passed its expiration date, which is why the entry cannot be opened even though it is described here. It is null when no link is involved. | [optional] [nullable] |
Model FileEntryDtoInteger.availableShareRights
Which access levels may be handed out on this entry, listed per kind of recipient, so that a client offers only levels the entry actually supports - a room for filling forms and a plain folder do not accept the same ones.
| Name | Type | Description | Notes |
|---|---|---|---|
| User | List | [optional] | |
| ExternalLink | List | [optional] | |
| Group | List | [optional] | |
| InvitationLink | List | [optional] | |
| PrimaryExternalLink | List | [optional] |
Model FileEntryDtoInteger.security
What the calling account may do with this entry, one flag per action, and the cheapest way to decide which operations to offer without trying them. The flags already take the room's settings and the account's role into account.
| Name | Type | Description | Notes |
|---|---|---|---|
| Read | Boolean | [optional] | |
| Comment | Boolean | [optional] | |
| FillForms | Boolean | [optional] | |
| Review | Boolean | [optional] | |
| Create | Boolean | [optional] | |
| CreateFrom | Boolean | [optional] | |
| Edit | Boolean | [optional] | |
| Delete | Boolean | [optional] | |
| CustomFilter | Boolean | [optional] | |
| EditRoom | Boolean | [optional] | |
| Rename | Boolean | [optional] | |
| ReadHistory | Boolean | [optional] | |
| Lock | Boolean | [optional] | |
| EditHistory | Boolean | [optional] | |
| CopyTo | Boolean | [optional] | |
| Copy | Boolean | [optional] | |
| MoveTo | Boolean | [optional] | |
| Move | Boolean | [optional] | |
| Pin | Boolean | [optional] | |
| Mute | Boolean | [optional] | |
| EditAccess | Boolean | [optional] | |
| Duplicate | Boolean | [optional] | |
| SubmitToFormGallery | Boolean | [optional] | |
| Download | Boolean | [optional] | |
| Convert | Boolean | [optional] | |
| CopySharedLink | Boolean | [optional] | |
| ReadLinks | Boolean | [optional] | |
| Reconnect | Boolean | [optional] | |
| CreateRoomFrom | Boolean | [optional] | |
| CopyLink | Boolean | [optional] | |
| Embed | Boolean | [optional] | |
| ChangeOwner | Boolean | [optional] | |
| IndexExport | Boolean | [optional] | |
| StartFilling | Boolean | [optional] | |
| FillingStatus | Boolean | [optional] | |
| ResetFilling | Boolean | [optional] | |
| StopFilling | Boolean | [optional] | |
| OpenForm | Boolean | [optional] | |
| EditInternal | Boolean | [optional] | |
| EditExpiration | Boolean | [optional] | |
| Vectorization | Boolean | [optional] | |
| AskAi | Boolean | [optional] | |
| UseChat | Boolean | [optional] | |
| UpdateXlsx | Boolean | [optional] | |
| AnalyzeResponses | Boolean | [optional] | |
| CanUseAi | Boolean | [optional] | |
| HistoryExport | Boolean | [optional] |
Model FileEntryDtoInteger.shareSettings
How many links of each kind currently exist for the entry, counted separately for the primary link and the additional ones. Kinds with no links are left out, and the whole field is null when the caller may not change the access or no link exists at all.
| Name | Type | Description | Notes |
|---|---|---|---|
| User | Integer (int32) | [optional] | |
| ExternalLink | Integer (int32) | [optional] | |
| Group | Integer (int32) | [optional] | |
| InvitationLink | Integer (int32) | [optional] | |
| PrimaryExternalLink | Integer (int32) | [optional] |
Model FileEntryDtoString
The part of a file or folder that depends on how the entry is identified: by a number on the portal, or by a string on a connected third-party account.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The name shown for the entry. For a file it carries the extension, which is how the format is recognised, and for a room it is the room name. | [optional] |
| access | FileShare | The level the calling account holds on this entry, resolved from its own rights, the groups it belongs to and any link it came in through. It is the level itself, not what the account may do with it - the action flags below answer that. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| sharedBy | EmployeeDto | Who gave the calling account the access it is using. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| ownedBy | EmployeeDto | Who owns the place the entry is shared from - the creator of the room it lies in, or of the personal section that holds it. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| shared | Boolean | Whether at least one external link exists for the entry, whichever kind. It says nothing about accounts and groups - those are counted by the flag for members below. | [optional] |
| sharedForUser | Boolean | Whether at least one account or group has been given rights on the entry directly, as opposed to reaching it through a link or through the room around it. | [optional] |
| sharedExternal | Boolean | Whether one of the entry's links is open to people outside the portal, as opposed to a link that only its own members can follow. This is the flag to watch when the concern is who can reach the content from outside. | [optional] |
| parentShared | Boolean | Whether the entry is reachable because the room or folder around it is shared, rather than through rights of its own. A copy or a move takes the entry out of that scope. | [optional] |
| shortWebUrl | URI (uri) | A shortened address that opens the entry through the link it is being read with. It is an empty string whenever no link applies, which is the usual case for a member browsing their own rooms. | [optional] |
| created | ApiDateTime | When the entry was created, written with the offset of the portal's time zone. For a file restored from an older version this is still the moment the file first appeared. | [optional] |
| createdBy | EmployeeDto | Who created the entry. It is null for a caller without an account, who is told nothing about the portal's members. | [optional] |
| updated | ApiDateTime | When the entry last changed, written with the offset of the portal's time zone. It is never reported as earlier than the creation moment, so the two can be compared safely. | [optional] |
| autoDelete | ApiDateTime | When the entry will disappear on its own, written with the offset of the portal's time zone. It is filled in only where a removal is actually scheduled - something in the trash while the portal cleans it up automatically, or a guest's own documents - so a null means nothing is scheduled rather than that the entry is permanent. | [optional] |
| rootFolderType | FolderType | The section the entry ultimately belongs to, which is what tells a personal document from one inside a room, from a template and from something in the trash or the archive. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| parentRoomType | FolderType | The kind of room the entry lies in, which decides what the room allows - filling forms, public links, indexing. It is null for an entry that is not inside a room at all. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| updatedBy | EmployeeDto | Who changed the entry last. It is null for a caller without an account. | [optional] |
| providerItem | Boolean | Set when the entry is stored on a connected third-party account rather than on the portal, and null when it is stored on the portal. Such an entry is identified by a string rather than a number, and some operations skip it. | [optional] |
| providerKey | String | Which third-party service holds the entry, matching the keys accepted by the third-party operations. It is null for an entry stored on the portal. | [optional] |
| providerId | Integer (int32) | The connected account the entry comes from, for telling apart two connections to the same service. It is null for an entry stored on the portal. | [optional] |
| order | String | The place of the entry in a room where the members arrange the content themselves, given as the position of the entry preceded by the positions of the folders leading to it, separated by dots. It is empty when nothing has been arranged. | [optional] |
| isFavorite | Boolean | Set when the calling account has marked the entry as a favorite, which is what puts it into the favorites listing. For a file that is not marked it is null rather than false. | [optional] |
| fileEntryType | FileEntryType | Tells a folder from a file, and so which of the two shapes the rest of the object has. A room is reported as a folder here. | [optional] [enum: 1, 2] |
| id | String | The identifier to pass back to the other operations of this entry. It is a number for storage on the portal and a string for a connected third-party account, and it is unique only within its own kind, so files and folders may carry the same value. | [optional] [nullable] |
| rootFolderId | String | The section the entry ultimately lies in, as an identifier that can be listed like any other folder. For an entry inside a room this is the rooms section, not the room. | [optional] [nullable] |
| originId | String | The folder the entry was deleted from, which is where restoring it puts it back. It is left out of the answer unless the entry is in the trash. | [optional] [nullable] |
| originRoomId | String | The room the entry was deleted from, left out of the answer for anything that was not deleted out of a room. | [optional] [nullable] |
| originTitle | String | The name of the folder the entry was deleted from, for showing where it would be restored to. It is null for an entry that is not in the trash. | [optional] [nullable] |
| originRoomTitle | String | The name of the room the entry was deleted from, null for anything that was not deleted out of a room. | [optional] [nullable] |
| canShare | Boolean | Whether the calling account may change who has access to the entry, and so whether offering a sharing dialog for it makes sense. It is false in rooms whose access is fixed by the room itself, such as a private one, even for its manager. | [optional] |
| shareSettings | FileEntryDtoInteger_allOf_shareSettings | [optional] [nullable] | |
| security | FileEntryDtoInteger_allOf_security | [optional] [nullable] | |
| availableShareRights | FileEntryDtoInteger_allOf_availableShareRights | [optional] [nullable] | |
| requestToken | String | The token of the link the entry is being read through, which is the value the external-share operations expect and which also has to be carried by the download and preview addresses. It is null whenever the entry is not being read through a link. | [optional] [nullable] |
| external | Boolean | Set when the link being used was made for this very entry, and false when the entry is reached through a link to the room around it. It is null when no link is involved. | [optional] [nullable] |
| expirationDate | ApiDateTime | When the link being used stops working, written with the offset of the portal's time zone. It is null for a link that never expires and whenever no link is involved. | [optional] |
| isLinkExpired | Boolean | Set when the link being used has already passed its expiration date, which is why the entry cannot be opened even though it is described here. It is null when no link is involved. | [optional] [nullable] |
Model FileEntryIntegerArrayWrapper
The successful API response containing the list of FileEntryDtoInteger objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FileEntryDtoInteger objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileEntryType
Possible values:
1— Folder (Folder)2— File (File)
Model FileIntegerArrayWrapper
The successful API response containing the list of FileDtoInteger objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FileDtoInteger objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileIntegerWrapper
The successful API response containing the FileDtoInteger object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FileDtoInteger | The FileDtoInteger object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileKeys
The encrypted file key issued to one user.
| Name | Type | Description | Notes |
|---|---|---|---|
| userId | UUID (uuid) | The identifier of the user the file key was issued to. | [optional] [example: 9924256B-447C-4F19-9dbd-8ad8c39e8ff5] |
| publicKeyId | UUID (uuid) | The identifier of the key pair the file key is encrypted for. | [optional] [example: 9924256B-447C-4F19-9dbd-8ad8c39e8ff5] |
| privateKeyEnc | String | The file key, encrypted with the public key of the pair. | [optional] [example: U2FsdGVkX1+Lm3s...] [nullable] |
| tenantId | Integer (int32) | The identifier of the portal the file belongs to. | [optional] [example: 1] |
| fileId | Integer (int32) | The identifier of the file the key unlocks. | [optional] [example: 9846] |
| createOn | Date (date-time) | The date and time when the file key was issued. | [optional] [example: 2025-01-01T00:00:00] |
Model FileLink
The address the content of a file is fetched from, together with the signature that authorises the fetch, as the document service is handed it.
| Name | Type | Description | Notes |
|---|---|---|---|
| filetype | String | The format the stored content is in, lower-cased and with the leading dot, which is how the document service learns how to read the bytes behind the address. It stays empty when the file title carries no extension at all. | [required] [example: .docx] [nullable] |
| token | String | Signs the address and the format above so that the document service can trust them. It stays empty on a portal that has no signature secret configured for the document service, and the address is then meant to be fetched unsigned. | [optional] [example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...] [nullable] |
| url | URI (uri) | Where the content is fetched from: the portal download handler, pinned to the revision the file was at when the address was issued and carrying an authorisation key of limited validity. It is addressed to the host the document service can reach, which on a deployment with a private editor network is not the address a browser should follow. | [required] [example: https://portal.example.com/filehandler.ashx?action=stream&fileid=512&version=3] [nullable] |
Model FileLinkRequest
The settings of an external link to a file.
| Name | Type | Description | Notes |
|---|---|---|---|
| linkId | UUID (uuid) | The link to rewrite, as reported by GET api/2.0/files/file/{id}/links. An identifier that is not yet in use, the empty one included, creates a link instead. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| access | FileShare | The rights the link grants to whoever follows it. The value that denies everything revokes the link. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| expirationDate | ApiDateTime | The moment the link stops working, read in the time zone of the portal. A date more than a few years ahead is rejected as an invalid request; left out, the link does not expire on its own. | [optional] |
| title | String | The name the link carries in the sharing list of the file, for the people who manage it; it is not shown to whoever follows the link. | [optional] [example: My Document] [minLength: 0] [maxLength: 255] [nullable] |
| internal | Boolean | Who may follow the link: true admits only accounts that are signed in to the portal, false admits anybody who has the address. | [optional] [example: false] |
| primary | Boolean | Whether this link becomes the primary link of the file - the one the Copy link action of a client hands out. A file has one primary link at a time. | [optional] [example: true] |
| denyDownload | Boolean | What a visitor may do with the content: true leaves them with viewing in the browser, false lets them download and print it as their rights allow. | [optional] [example: false] |
| password | String | The secret a visitor has to type before the file opens; left out, the link opens without one. | [optional] [example: p@ssw0rd] [minLength: 0] [maxLength: 255] [nullable] |
Model FileLinkWrapper
The successful API response containing the FileLink object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FileLink | The FileLink object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileOperationArrayWrapper
The successful API response containing the list of FileOperationDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FileOperationDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileOperationDto
One background file operation of the caller, as it stood when the answer was built.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The identifier of the operation, the one to pass to PUT api/2.0/files/fileops/terminate/{id} to stop it. Operations belong to the account that started them, so an identifier of somebody else is never listed here. | [required] [example: a1f4c9b2-3d8e-4f77-9b16-2c5de8f0a913] [nullable] |
| Operation | FileOperationType | What the operation does with the entries, which also decides what else is reported: only a download fills url, and a deletion leaves files and folders empty. | [required] [enum: 0, 1, 2, 3, 4, 5, 6, 7] |
| progress | Integer (int32) | How far the operation has come, from 0 to 100. Reaching 100 only means it stopped; whether it did what it was asked for is told by error. | [required] [example: 100] |
| error | String | The reason the operation could not finish its work, in the language of the request. Empty when nothing went wrong, which is the only way to tell a successful operation from a failed one. | [required] [example: Folder not found.] [nullable] |
| processed | String | How many entries the operation has handled so far, written as a decimal number in a string. It counts items, not percent, and stays behind progress on operations that walk into subfolders. | [required] [example: 12] [nullable] |
| finished | Boolean | Whether the operation has stopped running. A finished operation is reported once and then dropped, so the next read of the operation list no longer contains it. | [required] [example: true] |
| url | URI (uri) | The address the packed archive can be downloaded from once a bulk download has finished. Empty for every other kind of operation. | [optional] [example: https://portal.example.com/filehandler.ashx?action=bulk] [nullable] |
| files | List | The files the operation produced or moved, in the order it wrote them down. Empty while nothing has been written yet and for a deletion, which reports no entries at all. | [optional] [example: [{id=10, title=document.docx}]] [nullable] |
| folders | List | The folders the operation produced or moved, in the order it wrote them down. Empty while nothing has been written yet and for a deletion. | [optional] [example: [{id=20, title=Reports}]] [nullable] |
| status | DistributedTaskStatus | The state of the background task behind the operation, which tells a task that was cancelled or that crashed from one that ran to its end. | [optional] [enum: 0, 1, 2, 3, 4] |
Model FileOperationRequestBaseDto
The parameter shared by every request that starts a background file operation.
| Name | Type | Description | Notes |
|---|---|---|---|
| returnSingleOperation | Boolean | Which operations the answer carries: true returns the operation this call started and nothing else, false returns every operation of the same kind that the caller has running or unread. When nothing was queued, which happens for an empty selection, true falls back to the full list. | [optional] [example: false] |
Model FileOperationType
Possible values:
0— Move (Move)1— Copy (Copy)2— Delete (Delete)3— Download (Download)4— MarkAsRead (MarkAsRead)5— Import (Import)6— Convert (Convert)7— Duplicate (Duplicate)
Model FileOperationWrapper
The successful API response containing the FileOperationDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FileOperationDto | The FileOperationDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileReference
The file reference parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| referenceData | FileReferenceData | How this document is named when another spreadsheet refers to it. Send it back as it stands to resolve the reference again. | [optional] |
| error | String | Filled in when the reference resolved to nothing; the rest of the descriptor is then empty and must not be handed to the editors. | [optional] [example: File not found] [nullable] |
| path | String | The title of the document the reference resolved to. | [optional] [example: Budget 2026.xlsx] [nullable] |
| url | URI (uri) | Where the content is fetched from. It is addressed to the host the document service can reach, which on a deployment with a private editor network is not the address a browser should follow. | [optional] [example: https://portal.example.com/filehandler.ashx?action=download&fileid=512] [nullable] |
| fileType | String | The format the content is in, without the leading dot. | [optional] [example: xlsx] [nullable] |
| key | String | Identifies the exact revision to the editors: two clients that receive the same key read the same co-editing session, and the key changes as soon as the document is saved. | [optional] [example: 1_512_3] [nullable] |
| link | String | The address of the document in the portal web editor - the link to put in front of a person, unlike the download address above. | [optional] [example: https://portal.example.com/doceditor?fileid=512] [nullable] |
| token | String | Signs this descriptor so that the editors can trust it. It stays empty on a portal that has no signature secret configured for the document service. | [optional] [example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...] [nullable] |
Model FileReferenceData
The pair of values that names a document across portals, as it is written into a spreadsheet formula.
| Name | Type | Description | Notes |
|---|---|---|---|
| fileKey | String | The id of the document inside the portal named below. | [optional] [example: 512] [nullable] |
| instanceId | String | The portal the document lives in. A reference whose value is not this portal cannot be resolved by the file key and falls back to the path or the link. | [optional] [example: 1] [nullable] |
| roomId | String | The room the document lies in. It is filled in only for a document opened in a virtual data room, and stays empty everywhere else. | [optional] [example: 42] [nullable] |
| canEditRoom | Boolean | Whether the caller may manage the room named above; it is only meaningful together with it. | [optional] [example: true] |
Model FileReferenceWrapper
The successful API response containing the FileReference object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FileReference | The FileReference object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileShare
Possible values:
0— None (None)1— Read and write (ReadWrite)2— Read (Read)3— Restrict (Restrict)4— Varies (Varies)5— Review (Review)6— Comment (Comment)7— Fill forms (FillForms)8— Custom filter (CustomFilter)9— Room manager (RoomManager)10— Editing (Editing)11— Content creator (ContentCreator)
Model FileShareArrayWrapper
The successful API response containing the list of FileShareDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FileShareDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileShareDto
One access entry on a file, a folder or a room: who holds it, at which level, and what the caller may change about it.
| Name | Type | Description | Notes |
|---|---|---|---|
| access | FileShare | The level the subject holds on the entry. On a link entry it is the level the link hands to whoever opens it, and in a batch answer Varies means the subject holds different levels on the listed entries. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| sharedTo | oas_any_type_not_mapped | [optional] [nullable] | |
| sharedToUser | EmployeeFullDto | The account the entry belongs to. It is filled in only when subjectType says an account, and is null for a group entry and for a link. | [optional] |
| sharedToGroup | GroupSummaryDto | The portal group the entry belongs to, which hands the level to everybody in it. It is filled in only for a group entry, and is null otherwise. | [optional] |
| sharedLink | FileShareLink | The sharing link the entry stands for, together with everything set on it. It is filled in only for a link entry, and is null for an account or a group. | [optional] |
| isLocked | Boolean | Whether this entry is the caller's own, which is why they cannot change its level. Link entries never report it. | [required] [example: false] |
| isOwner | Boolean | Whether the subject created the entry the access is given on, and so cannot be removed from it. | [required] [example: false] |
| canEditAccess | Boolean | Whether the caller may change the level of this entry. It is false on the caller's own entry, on every link, and whenever the caller may not hand out access at all. | [required] [example: true] |
| canEditInternal | Boolean | Whether the caller may switch this link between being open to anybody and asking the visitor to sign in to the portal first. | [required] [example: true] |
| canEditDenyDownload | Boolean | Whether the caller may forbid downloading through this link. Only a link of a virtual data room reports true, and only while the room itself still allows downloads. | [required] [example: true] |
| canEditExpirationDate | Boolean | Whether the caller may move the moment this link stops working. | [required] [example: true] |
| canRevoke | Boolean | Whether the caller may take this entry away altogether, which for a link means deleting the link. | [required] [example: true] |
| subjectType | SubjectType | What the entry was given to, which tells which of the three subject fields is filled in: an account, a group, or one of the kinds of link. | [required] [enum: 0, 1, 2, 3, 4] |
Model FileShareLink
A sharing link of a file, a folder or a room, with everything set on it.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | The identifier of the link, the one to send back as linkId to change or delete it. | [optional] [example: 9a2c1b3e-6d47-4f10-9b52-ac7d3e5f0812] |
| title | String | The name the link is listed under, which its author is free to choose and to leave empty. | [optional] [example: Shared document] [nullable] |
| shareLink | String | The shortened address to hand out. Opening it is what turns the link into access; the address stays the same while the link exists. | [optional] [example: https://portal.example.com/s/a1b2c3d4] [nullable] |
| expirationDate | ApiDateTime | The moment the link stops working, written with the offset of the portal time zone. Null when the link was left without an end. | [optional] |
| linkType | LinkType | Which of the two jobs the link does: letting somebody into the room as a member, or handing out the entry itself. The counters of uses are filled in for the first kind only. | [optional] [enum: 0, 1] |
| password | String | The password a visitor has to send before the link resolves, readable only by those who may manage the link. Empty when the link asks for none. | [optional] [example: S3cretPhrase] [nullable] |
| denyDownload | Boolean | Whether visitors coming through this link may only read the entry in the editor and not download or print it. | [optional] [example: false] [nullable] |
| isExpired | Boolean | Whether the moment in expirationDate has already passed, which leaves the link in place but refuses everybody who opens it. | [optional] [example: false] [nullable] |
| primary | Boolean | Whether this is the one link the entry always keeps: a public or a form-filling room is given it at creation, and deleting it there only makes a new one. | [optional] [example: true] |
| internal | Boolean | Whether the visitor has to sign in to the portal before the link resolves, as opposed to it being open to anybody who has the address. | [optional] [example: false] [nullable] |
| requestToken | String | The key that stands for this link in the calls that resolve it, such as GET api/2.0/files/share/{key}. It is filled in for links that hand out the entry, and empty for the ones that invite into a room. | [optional] [example: gg9J4mBW7pW9Wk0HqQoQ9L2mS1x6bK8vTnQ0aZ3] [nullable] |
| maxUseCount | Integer (int32) | How many accounts may still join the room through this invitation link in total. Null on a link that hands out the entry, where nothing is counted. | [optional] [example: 10] [nullable] |
| currentUseCount | Integer (int32) | How many accounts have already joined through this invitation link. Once it reaches maxUseCount the link stops letting anybody else in. Null on a link that hands out the entry. | [optional] [example: 5] [nullable] |
Model FileShareParams
One sharing entry: an account, a group or an email address, and the access level it is given.
| Name | Type | Description | Notes |
|---|---|---|---|
| String (email) | The address of somebody who has no portal account yet. An invitation is sent to it and an account is created once it is accepted, so this is the field to use instead of an account identifier when the person is new to the portal. | [optional] [maxLength: 255] | |
| shareTo | UUID (uuid) | The account or the group the entry is about, taken from the portal people and group listings. Leave it out and give an email address instead to share with somebody who has no account yet. | [optional] |
| access | FileShare | What the subject may do with the shared item. The value 0 takes the access away again, and which of the other levels are accepted depends on what is being shared. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
Model FileShareResponseArrayWrapper
The successful API response containing the list of FileShare objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FileShare objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileShareWrapper
The successful API response containing the FileShareDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FileShareDto | The FileShareDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FileStatus
Possible values:
0— None (None)1— Is editing (IsEditing)2— Is new (IsNew)4— Is converting (IsConverting)8— Is original (IsOriginal)16— Is editing alone (IsEditingAlone)32— Is favorite (IsFavorite)64— Is template (IsTemplate)128— Is fill form draft (IsFillFormDraft)256— Is completed form (IsCompletedForm)
Model FileType
Possible values:
0— Unknown (Unknown)1— Archive (Archive)2— Video (Video)3— Audio (Audio)4— Image (Image)5— Spreadsheet (Spreadsheet)6— Presentation (Presentation)7— Document (Document)10— Pdf (Pdf)11— Diagram (Diagram)
Model FilesSettingsDto
Everything a client needs to work with documents in this portal: the format tables, the address templates, the upload limits, the portal-wide switches and the preferences of the calling account.
| Name | Type | Description | Notes |
|---|---|---|---|
| extsImagePreviewed | List | Images the portal can show in its own viewer. Anything outside the list has to be downloaded to be seen. | [optional] [example: [.bmp, .gif, .jpeg, .jpg, .png, .svg]] [nullable] |
| extsMediaPreviewed | List | Audio and video the portal can play in its own player. | [optional] [example: [.mp4, .webm, .mp3, .ogg]] [nullable] |
| extsWebPreviewed | List | Documents the editor can open read-only. A format that is here but not in the edited list can be viewed and not changed. | [optional] [example: [.docx, .xlsx, .pptx, .pdf]] [nullable] |
| extsWebEdited | List | Documents the editor can open for editing. Uploading a format outside this list and outside the convertible list leaves a file that can only be downloaded. | [optional] [example: [.docx, .xlsx, .pptx]] [nullable] |
| extsWebEncrypt | List | Documents that can be edited inside a private room, where the content is encrypted on the client. | [optional] [example: [.docx, .xlsx, .pptx]] [nullable] |
| extsWebReviewed | List | Documents that support the reviewing mode, so that granting review access to them is meaningful. | [optional] [example: [.docx]] [nullable] |
| extsWebCustomFilterEditing | List | Spreadsheets that support the custom filter mode, where a filter applied by one editor does not disturb the others. | [optional] [example: [.xlsx]] [nullable] |
| extsWebRestrictedEditing | List | Documents that can only be filled in or commented on rather than edited freely, whatever access the caller holds. | [optional] [example: [.pdf]] [nullable] |
| extsWebCommented | List | Documents that support comments, so that granting comment access to them is meaningful. | [optional] [example: [.docx]] [nullable] |
| extsWebTemplate | List | Documents the portal treats as templates to create new files from. | [optional] [example: [.docx, .xlsx, .pptx]] [nullable] |
| extsMustConvert | List | Formats that cannot be edited as they are and are converted on upload or on first opening. Which target each one has is in the convertible table below. | [optional] [example: [.doc, .xls, .ppt]] [nullable] |
| extsConvertible | Map | The conversion map of the portal: for each source extension, the extensions it can be converted into. Use it to fill the target format of a conversion request instead of guessing one. | [optional] [example: {.doc=[.docx, .pdf], .xls=[.xlsx, .pdf]}] |
| extsUploadable | List | Formats the portal offers to create and upload as documents. It is not an upload filter: files of other formats are stored as they are. | [optional] [example: [.docx, .xlsx, .pdf]] [nullable] |
| extsArchive | List | Formats recognised as archives, which is what decides the archive icon and the offer to unpack. | [optional] [example: [.zip, .rar, .7z]] [nullable] |
| extsVideo | List | Formats classified as video. The classification lists drive icons and the media filters of the listing operations, and are wider than what the built-in player can show. | [optional] [example: [.mp4, .webm, .avi]] [nullable] |
| extsAudio | List | Formats classified as audio. | [optional] [example: [.mp3, .ogg, .wav]] [nullable] |
| extsImage | List | Formats classified as images. | [optional] [example: [.png, .jpg, .gif]] [nullable] |
| extsSpreadsheet | List | Formats classified as spreadsheets. | [optional] [example: [.xlsx, .xls, .ods]] [nullable] |
| extsPresentation | List | Formats classified as presentations. | [optional] [example: [.pptx, .ppt, .odp]] [nullable] |
| extsDocument | List | Formats classified as text documents. | [optional] [example: [.docx, .doc, .odt]] [nullable] |
| extsDiagram | List | Formats classified as diagrams. | [optional] [example: [.vsdx]] [nullable] |
| internalFormats | FilesSettingsDto_internalFormats | [optional] [nullable] | |
| masterFormExtension | String | The extension of a fillable form template in this portal. It is configurable, so read it rather than assuming the product default. | [optional] [example: .pdf] [nullable] |
| paramVersion | String | The name of the query parameter that pins a document address to one version. Append it to the addresses below instead of composing a version address by hand. | [optional] [example: version] [nullable] |
| paramOutType | String | The name of the query parameter that asks a download address for a converted copy in another format. | [optional] [example: outputtype] [nullable] |
| fileDownloadUrlString | URI (uri) | The template of the address a file is downloaded from: substitute the file identifier for the {0} placeholder. Add the version and output-type parameters named above for a particular version or format. | [optional] [example: https://example.com/filehandler.ashx?action=download&fileid={0}] [nullable] |
| fileWebViewerUrlString | String | The template of the address that opens a file in the viewer inside the portal, with {0} for the file identifier. It is a portal-relative address, meant to be opened in a browser rather than called as an API. | [optional] [example: /products/files/doceditor?fileid={0}&action=view] [nullable] |
| fileWebViewerExternalUrlString | URI (uri) | The same viewer address as an absolute one, for a message or a page outside the portal. | [optional] [example: https://example.com/products/files/doceditor?fileid={0}&action=view] [nullable] |
| fileWebEditorUrlString | String | The template of the address that opens a file for editing inside the portal, with {0} for the file identifier. Whether the session really becomes editable still depends on the access the caller holds. | [optional] [example: /products/files/doceditor?fileid={0}&action=edit] [nullable] |
| fileWebEditorExternalUrlString | URI (uri) | The same editing address as an absolute one, for use outside the portal. | [optional] [example: https://example.com/products/files/doceditor?fileid={0}&action=edit] [nullable] |
| fileRedirectPreviewUrlString | URI (uri) | The template of the address that sends the browser on to whichever viewer or editor suits the file, with {0} for the file identifier. Use it when the kind of the file is not known in advance. | [optional] [example: https://example.com/products/files/{0}] [nullable] |
| fileThumbnailUrlString | URI (uri) | The template of the address a file thumbnail is fetched from, with {0} for the file identifier. A thumbnail is built in the background, so the address can answer with nothing for a while after the file appears. | [optional] [example: https://example.com/filehandler.ashx?action=thumb&fileid={0}] [nullable] |
| confirmDelete | Boolean | Whether the caller asked to be prompted before a deletion. Written by PUT api/2.0/files/changedeleteconfrim. | [optional] [example: true] |
| enableThirdParty | Boolean | Whether this portal allows third-party storages to be connected at all. It is set portal-wide by an administrator, so a member sees it as read-only. | [optional] [example: true] |
| externalShare | Boolean | Whether links that open an entry without a portal account may be created in this portal. Set portal-wide by an administrator. | [optional] [example: true] |
| externalShareSocialMedia | Boolean | Whether the share-to-network buttons are offered next to an external link. It is reported as false whenever external sharing itself is off. | [optional] [example: true] |
| storeOriginalFiles | Boolean | Whether the caller's uploads keep the original file when the portal converts them. With false the conversion replaces the uploaded file with a new version of it. | [optional] [example: true] |
| keepNewFileName | Boolean | Whether the caller asked for new documents to be created with the default name instead of being prompted for one. | [optional] [example: false] |
| displayFileExtension | Boolean | Whether the caller asked to see extensions in file titles. Stored titles always carry the extension whatever this says. | [optional] [example: true] |
| showQuickActions | Boolean | Specifies whether to display the quick action buttons. | [optional] [example: true] |
| convertNotify | Boolean | Whether the caller is told about the result of a conversion. There is no operation in this document that writes it. | [optional] [example: true] |
| hideConfirmCancelOperation | Boolean | Whether the prompt shown before a running operation is abandoned is hidden for the caller. | [optional] [example: false] |
| hideConfirmConvertSave | Boolean | Whether the prompt that offers to keep a copy in the original format on conversion is hidden for the caller. Once true it cannot be turned back through the API. | [optional] [example: false] |
| hideConfirmConvertOpen | Boolean | Whether the prompt that offers to open the conversion result is hidden for the caller. Once true it cannot be turned back through the API. | [optional] [example: false] |
| hideConfirmRoomLifetime | Boolean | Whether the warning shown before the lifetime settings of a room are changed is hidden for the caller. | [optional] [example: false] |
| defaultOrder | OrderBy | The ordering the listing operations fall back to when a request names none. It follows the last order the caller asked a listing for, so it changes on its own as the account is used. | [optional] |
| forcesave | Boolean | Whether the editor writes a document back to storage while the session is still open. It is on for every portal and cannot be switched off. | [optional] [example: true] |
| storeForcesave | Boolean | Whether those intermediate saves are kept as separate versions. They are not, in any portal: they update the current version instead. | [optional] [example: false] |
| recentSection | Boolean | Whether the Recent section is offered to the caller among the section roots. | [optional] [example: true] |
| favoritesSection | Boolean | Whether the Favorites section is offered to the caller among the section roots. | [optional] [example: true] |
| templatesSection | Boolean | Whether the Templates section is offered to the caller among the section roots. | [optional] [example: true] |
| downloadTarGz | Boolean | The archive format the caller's multi-item downloads are packed into: true for .tar.gz, false for .zip. | [optional] [example: true] |
| automaticallyCleanUp | AutoCleanUpData | The trash auto-clearing setting of the caller, the same pair GET api/2.0/files/settings/autocleanup returns. | [optional] |
| canSearchByContent | Boolean | Whether documents in this portal can be searched by what is inside them and not only by title. It depends on the full-text search service being configured and having indexed the portal. | [optional] [example: true] |
| defaultSharingAccessRights | List | The access rights the sharing dialog offers the caller by default. The portal normalises the set it stores, so this can be shorter than what was last sent. | [optional] [example: [1, 2]] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] [nullable] |
| maxUploadThreadCount | Integer (int32) | How many upload requests the portal accepts from one account at a time. Sending more than this in parallel gets the extra ones refused rather than queued. | [optional] [example: 10] |
| chunkUploadSize | Long (int64) | The size in bytes of one chunk of a chunked upload. Split a large file exactly along this size: a chunk that does not match is refused by the upload session. | [optional] [example: 10485760] |
| openEditorInSameTab | Boolean | Whether the caller asked for documents to open in the current browser tab. | [optional] [example: false] |
| organizeRoomsGrouping | Boolean | Whether the caller asked to see rooms arranged by the groups they belong to. | [optional] [example: true] |
| defaultShareLinkInternal | Boolean | The kind of external link this portal offers first: true for a link only its own accounts can open, false for one anyone holding it can open. | [optional] [example: false] |
| externalShareApplyToDocuments | Boolean | Whether the external sharing restriction covers personal documents. It matters only while external sharing is off. | [optional] [example: true] |
| externalShareApplyToRooms | Boolean | Whether the external sharing restriction covers rooms, including making a new one public. It matters only while external sharing is off. | [optional] [example: true] |
| blockExistingLinksOnRestrict | Boolean | Whether links created before the restriction stop opening as well, rather than only new ones being refused. | [optional] [example: true] |
| extsFilesVectorized | List | Formats whose content can be indexed for the AI features of the portal. A file outside the list is left out of that index. | [optional] [example: [.docx, .pdf, .txt]] [nullable] |
| maxVectorizationFileSize | Long (int64) | The largest file size in bytes that is indexed for the AI features. A larger file is skipped even when its format is listed above. | [optional] [example: 5242880] |
Model FilesSettingsDto.internalFormats
The extension the portal creates for each kind of document, keyed by that kind. This is what a new empty document gets when no extension is asked for.
| Name | Type | Description | Notes |
|---|---|---|---|
| Unknown | String | [optional] | |
| Archive | String | [optional] | |
| Video | String | [optional] | |
| Audio | String | [optional] | |
| Image | String | [optional] | |
| Spreadsheet | String | [optional] | |
| Presentation | String | [optional] | |
| Document | String | [optional] | |
| String | [optional] | ||
| Diagram | String | [optional] |
Model FilesSettingsWrapper
The successful API response containing the FilesSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FilesSettingsDto | The FilesSettingsDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FilesStatisticsFolder
One section of the portal and the space its documents take.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The name of the section as the interface shows it, translated into the language used by the caller, so it suits display but not matching - which section an entry describes is told by the field that carries it. | [optional] [example: Files] [nullable] |
| usedSpace | Long (int64) | The size of the files kept in the section, in bytes, counting every folder and room inside it; 0 means the section holds nothing. The counter is brought up to date as an operation finishes, so a reading taken right after an upload or a delete can still show the previous value. | [optional] [example: 1048576] |
Model FilesStatisticsResultDto
The space that stored documents take in each section of the portal, in bytes. The figures cover every account of the portal rather than the caller alone, and a section the portal does not have comes back as null instead of a zero figure.
| Name | Type | Description | Notes |
|---|---|---|---|
| myDocumentsUsedSpace | FilesStatisticsFolder | The space taken by the personal Files sections of all accounts of the portal added together. An item deleted to the trash keeps taking space and is counted in trashUsedSpace until the trash is emptied. | [optional] |
| trashUsedSpace | FilesStatisticsFolder | The space held by the items deleted to the trash from any section, which is given back only when the trash is emptied or the items are erased for good. | [optional] |
| archiveUsedSpace | FilesStatisticsFolder | The space taken by the content of the archived rooms, the archived form filling rooms included. Restoring a room moves its space back to roomsUsedSpace or formsUsedSpace. | [optional] |
| roomsUsedSpace | FilesStatisticsFolder | The space taken by the content of the active rooms, except the form filling rooms, whose content is reported in formsUsedSpace. Archiving a room moves its space to archiveUsedSpace. | [optional] |
| aiAgentsUsedSpace | FilesStatisticsFolder | The space taken by the content of the AI agents section, which exists only in a portal where the AI agents feature is active; creating an AI room is not enough to bring the section into being. | [optional] |
| formsUsedSpace | FilesStatisticsFolder | The space taken by the content of the active form filling rooms, which is kept apart from roomsUsedSpace even though those rooms are listed among the rooms. | [optional] |
Model FilesStatisticsResultWrapper
The successful API response containing the FilesStatisticsResultDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FilesStatisticsResultDto | The FilesStatisticsResultDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FillingFormResultDtoInteger
The outcome of one completed form-filling session, as the person who has just filled the form sees it.
| Name | Type | Description | Notes |
|---|---|---|---|
| formNumber | Integer (int32) | The number this copy was given among the copies made of the same form, counting up from 1. It is the number the results of the form are ordered by and the one the title of the copy carries. | [required] [example: 1] |
| completedForm | FileDtoInteger | The filled copy that the session produced, as an ordinary file: it can be read and downloaded with the file operations of this API. | [optional] |
| originalForm | FileDtoInteger | The form the copy was made from, so that a client can offer filling it once more. | [optional] |
| manager | EmployeeFullDto | The account that owns the original form, reported with its email address, so that the person who has just filled the form knows who receives it and whom to ask about it. | [optional] |
| roomId | Integer (int32) | The room the form was filled in. It comes back as 0 when the session was reached through a link shared for that single form rather than for its room, in which case there is no room the caller could be sent to. | [required] [example: 123] |
| isRoomMember | Boolean | Tells whether the calling account may open that room: true for a member of the room and for a portal administrator, in which case a client can offer going to the room; false for the anonymous caller who filled the form through a link and can only be shown the copy itself. | [optional] [example: true] |
Model FillingFormResultIntegerWrapper
The successful API response containing the FillingFormResultDtoInteger object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FillingFormResultDtoInteger | The FillingFormResultDtoInteger object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FilterType
Possible values:
0— None (None)1— Files only (FilesOnly)2— Folders only (FoldersOnly)3— Documents only (DocumentsOnly)4— Presentations only (PresentationsOnly)5— Spreadsheets only (SpreadsheetsOnly)7— Images only (ImagesOnly)8— By user (ByUser)9— By department (ByDepartment)10— Archive only (ArchiveOnly)11— By extension (ByExtension)12— Media only (MediaOnly)13— Filling forms rooms (FillingFormsRooms)14— Editing rooms (EditingRooms)17— Custom rooms (CustomRooms)20— Public rooms (PublicRooms)22— Pdf (Pdf)23— Pdf form (PdfForm)24— Virtual data rooms (VirtualDataRooms)25— Diagrams only (DiagramsOnly)26— Ai rooms (AiRooms)
Model FolderContentDtoInteger
One page of the contents of a folder or of a section: its entries split into files and folders, the folder itself, and the counters needed to page through the rest.
| Name | Type | Description | Notes |
|---|---|---|---|
| files | List | The file entries of this page. It is empty when the folder holds no files, when the filters matched none of them, and in the sections that list rooms only. | [optional] [example: [{id=10, title=document.docx}]] [nullable] |
| folders | List | The folder entries of this page. In a section of rooms these entries are the rooms themselves, which is where their type, tags, logo and quota are read from. | [optional] [example: [{id=20, title=My Folder}]] [nullable] |
| current | FolderDtoInteger | The folder or section the page was read from, with its own title, type and access rights. It describes the container, not the entries, and is filled in even when the page is empty. | [optional] |
| pathParts | oas_any_type_not_mapped | [required] [nullable] | |
| startIndex | Integer (int32) | The position of the first entry of this page in the whole result, echoing the requested start index. Add the number of entries received to it to ask for the next page. | [optional] [example: 0] |
| count | Integer (int32) | How many entries this page carries, files and folders together. A page shorter than the requested size means the result is exhausted. | [optional] [example: 4] |
| total | Integer (int32) | How many entries matched before paging was applied, across the whole folder. Page until the start index plus the entries received reaches it. | [required] [example: 4] |
| new | Integer (int32) | How many entries of this folder are marked as new for the caller. It is 0 for every listing when the account has switched the new-item badges off, so a zero here does not prove that nothing has changed. | [optional] [example: 0] |
Model FolderContentIntegerArrayWrapper
The successful API response containing the list of FolderContentDtoInteger objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FolderContentDtoInteger objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FolderContentIntegerWrapper
The successful API response containing the FolderContentDtoInteger object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FolderContentDtoInteger | The FolderContentDtoInteger object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FolderDtoInteger
The folder, with the fields that only a room carries filled in when the folder is a room.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The name shown for the entry. For a file it carries the extension, which is how the format is recognised, and for a room it is the room name. | [optional] |
| access | FileShare | The level the calling account holds on this entry, resolved from its own rights, the groups it belongs to and any link it came in through. It is the level itself, not what the account may do with it - the action flags below answer that. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| sharedBy | EmployeeDto | Who gave the calling account the access it is using. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| ownedBy | EmployeeDto | Who owns the place the entry is shared from - the creator of the room it lies in, or of the personal section that holds it. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| shared | Boolean | Whether at least one external link exists for the entry, whichever kind. It says nothing about accounts and groups - those are counted by the flag for members below. | [optional] |
| sharedForUser | Boolean | Whether at least one account or group has been given rights on the entry directly, as opposed to reaching it through a link or through the room around it. | [optional] |
| sharedExternal | Boolean | Whether one of the entry's links is open to people outside the portal, as opposed to a link that only its own members can follow. This is the flag to watch when the concern is who can reach the content from outside. | [optional] |
| parentShared | Boolean | Whether the entry is reachable because the room or folder around it is shared, rather than through rights of its own. A copy or a move takes the entry out of that scope. | [optional] |
| shortWebUrl | URI (uri) | A shortened address that opens the entry through the link it is being read with. It is an empty string whenever no link applies, which is the usual case for a member browsing their own rooms. | [optional] |
| created | ApiDateTime | When the entry was created, written with the offset of the portal's time zone. For a file restored from an older version this is still the moment the file first appeared. | [optional] |
| createdBy | EmployeeDto | Who created the entry. It is null for a caller without an account, who is told nothing about the portal's members. | [optional] |
| updated | ApiDateTime | When the entry last changed, written with the offset of the portal's time zone. It is never reported as earlier than the creation moment, so the two can be compared safely. | [optional] |
| autoDelete | ApiDateTime | When the entry will disappear on its own, written with the offset of the portal's time zone. It is filled in only where a removal is actually scheduled - something in the trash while the portal cleans it up automatically, or a guest's own documents - so a null means nothing is scheduled rather than that the entry is permanent. | [optional] |
| rootFolderType | FolderType | The section the entry ultimately belongs to, which is what tells a personal document from one inside a room, from a template and from something in the trash or the archive. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| parentRoomType | FolderType | The kind of room the entry lies in, which decides what the room allows - filling forms, public links, indexing. It is null for an entry that is not inside a room at all. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| updatedBy | EmployeeDto | Who changed the entry last. It is null for a caller without an account. | [optional] |
| providerItem | Boolean | Set when the entry is stored on a connected third-party account rather than on the portal, and null when it is stored on the portal. Such an entry is identified by a string rather than a number, and some operations skip it. | [optional] |
| providerKey | String | Which third-party service holds the entry, matching the keys accepted by the third-party operations. It is null for an entry stored on the portal. | [optional] |
| providerId | Integer (int32) | The connected account the entry comes from, for telling apart two connections to the same service. It is null for an entry stored on the portal. | [optional] |
| order | String | The place of the entry in a room where the members arrange the content themselves, given as the position of the entry preceded by the positions of the folders leading to it, separated by dots. It is empty when nothing has been arranged. | [optional] |
| isFavorite | Boolean | Set when the calling account has marked the entry as a favorite, which is what puts it into the favorites listing. For a file that is not marked it is null rather than false. | [optional] |
| fileEntryType | FileEntryType | Tells a folder from a file, and so which of the two shapes the rest of the object has. A room is reported as a folder here. | [optional] [enum: 1, 2] |
| id | Integer (int32) | The identifier to pass back to the other operations of this entry. It is a number for storage on the portal and a string for a connected third-party account, and it is unique only within its own kind, so files and folders may carry the same value. | [optional] |
| rootFolderId | Integer (int32) | The section the entry ultimately lies in, as an identifier that can be listed like any other folder. For an entry inside a room this is the rooms section, not the room. | [optional] |
| originId | Integer (int32) | The folder the entry was deleted from, which is where restoring it puts it back. It is left out of the answer unless the entry is in the trash. | [optional] |
| originRoomId | Integer (int32) | The room the entry was deleted from, left out of the answer for anything that was not deleted out of a room. | [optional] |
| originTitle | String | The name of the folder the entry was deleted from, for showing where it would be restored to. It is null for an entry that is not in the trash. | [optional] |
| originRoomTitle | String | The name of the room the entry was deleted from, null for anything that was not deleted out of a room. | [optional] |
| canShare | Boolean | Whether the calling account may change who has access to the entry, and so whether offering a sharing dialog for it makes sense. It is false in rooms whose access is fixed by the room itself, such as a private one, even for its manager. | [optional] |
| shareSettings | FileEntryDtoInteger_allOf_shareSettings | [optional] [nullable] | |
| security | FileEntryDtoInteger_allOf_security | [optional] [nullable] | |
| availableShareRights | FileEntryDtoInteger_allOf_availableShareRights | [optional] [nullable] | |
| requestToken | String | The token of the link the entry is being read through, which is the value the external-share operations expect and which also has to be carried by the download and preview addresses. It is null whenever the entry is not being read through a link. | [optional] |
| external | Boolean | Set when the link being used was made for this very entry, and false when the entry is reached through a link to the room around it. It is null when no link is involved. | [optional] |
| expirationDate | ApiDateTime | When the link being used stops working, written with the offset of the portal's time zone. It is null for a link that never expires and whenever no link is involved. | [optional] |
| isLinkExpired | Boolean | Set when the link being used has already passed its expiration date, which is why the entry cannot be opened even though it is described here. It is null when no link is involved. | [optional] |
| parentId | Integer (int32) | The folder this one is listed in. For a room it is the root of the section the room lives in, and for an entry opened through a sharing link whose real parent the caller may not read it is the root of the section with the entries shared with them. | [optional] |
| filesCount | Integer (int32) | How many files lie directly in the folder, without counting the subfolders. The roots of the Rooms, room templates and default templates sections always report 0, because the number is not collected for them. | [optional] |
| foldersCount | Integer (int32) | How many subfolders lie directly in the folder. For an AI room the two service subfolders it always holds are subtracted, so the number matches what a listing of it shows, and the roots of the Rooms and templates sections report 0. | [optional] |
| isShareable | Boolean | Whether the caller may hand out access to the folder. It is filled in only for the folder a folder-contents answer is about, and is null in every other answer, so null says nothing about the sharing rights. | [optional] [nullable] |
| new | Integer (int32) | How many entries inside the folder the caller has not opened yet, the number drawn as the badge on it. An account that turned the badges off in its own settings always reads 0 here, so 0 alone does not prove that everything has been seen. | [optional] |
| mute | Boolean | Whether the caller silenced the notifications of this room: true means no message about its activity reaches them. The choice belongs to the reading account rather than to the room, so two members of one room read different values. | [optional] |
| tags | List | The names of the tags attached to the room. Empty for a folder that is not a room, since only rooms carry tags, and the names are the ones from the portal tag catalogue. | [optional] [nullable] |
| logo | Logo | The addresses of the room logo in four sizes, together with the colour and the built-in cover that are drawn when no logo was uploaded. A room without a logo answers with four empty addresses rather than with null, and the field is null for a folder that is not a room. | [optional] |
| pinned | Boolean | Whether the caller pinned the room to the top of their own room list. Pinning is personal and is lost when the room is archived. | [optional] |
| roomType | RoomType | The kind of the room, which decides the default access rules of its members. Null for a folder that is not a room. | [optional] [enum: 1, 2, 5, 6, 8, 9] |
| private | Boolean | Whether the room is a private one, which limits it to the accounts invited into it and needs encryption keys set up for each of them. | [optional] |
| indexing | Boolean | Whether the contents of the room are kept in an explicit numbered order, the one reported as order on each entry, instead of being left to the sorting the reader asks for. | [optional] |
| denyDownload | Boolean | Whether downloading and printing the contents of the room is forbidden, which leaves its members with viewing and editing in the editor. | [optional] |
| lifetime | RoomDataLifetimeDto | The rule by which the files of the room are removed once they grow old. Null when the room has no such rule, which is also what is reported after the rule is switched off, because switching it off erases it. | [optional] |
| watermark | WatermarkDto | The watermark stamped over the documents of the room while they are viewed and printed. Null when the room has no watermark, and for every folder that is not a room. | [optional] |
| type | FolderType | The part the folder plays inside its room: one of the service folders of the form-filling flow, or the knowledge and result storages of an AI room. It stays null for an ordinary folder and for the room itself, so it does not describe folders in general. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| inRoom | Boolean | Whether the caller holds the room through an invitation of their own: true for the account that created it and for a member invited personally, false when the access comes from a group they belong to, and null for a folder that is not a room. | [optional] [nullable] |
| quotaLimit | Long (int64) | How much space the files of the room may take, in bytes. It is the limit set on this room, or the portal default for rooms when none was set. Null when the tariff of the portal does not count room statistics, when room quotas are switched off, when the room lies in the archive or the trash, or when the caller may only read it. | [optional] [nullable] |
| isCustomQuota | Boolean | Whether quotaLimit is a limit set on this room (true) or the portal default for rooms (false). Null exactly when quotaLimit is null. | [optional] [nullable] |
| usedSpace | Long (int64) | How much the files of the room take, in bytes, as of the last time the counter was recomputed. The counter is refreshed when a file operation finishes, so a read right after an upload or a deletion can still report the previous figure. Null for a folder that is not a room. | [optional] [nullable] |
| passwordProtected | Boolean | Whether the sharing link the folder was opened through asks for a password that has not been entered yet. While it is true the contents stay unreadable; send the password to POST api/2.0/files/share/{key}/password first. Null when the folder was not reached through a link. | [optional] [nullable] |
| expired | Boolean | Deprecated, read isLinkExpired instead: whether the sharing link the folder was opened through has run out of its lifetime. | [optional] [nullable] |
| chatSettings | ChatSettingsDto | The chat configuration of an AI room. Only the system prompt is reported here, whatever else the room stores, and the field is null for every folder that is not an AI room. | [optional] |
| rootRoomType | RoomType | The kind of the room the folder lies in. It is filled in only for the folder a folder-contents answer is about, and only when that room is an AI room, so it is null in every other answer and for every other room kind. | [optional] [enum: 1, 2, 5, 6, 8, 9] |
| saveFormAsXLSX | Boolean | Whether the answers collected in this form-filling room are also gathered into a spreadsheet next to the completed copies. Filled in for form-filling rooms only. | [optional] [nullable] |
| sendFormToExternalDB | Boolean | Whether the answers collected in this form-filling room are also pushed into the external database configured for the portal. Filled in for form-filling rooms only. | [optional] [nullable] |
| originalFormId | Integer (int32) | The form the completed copies in this folder were filled from, taken from the copy submitted last. Null while the folder holds no completed copy, and for every folder that does not collect them. | [optional] [nullable] |
Model FolderDtoString
The folder, with the fields that only a room carries filled in when the folder is a room.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The name shown for the entry. For a file it carries the extension, which is how the format is recognised, and for a room it is the room name. | [optional] |
| access | FileShare | The level the calling account holds on this entry, resolved from its own rights, the groups it belongs to and any link it came in through. It is the level itself, not what the account may do with it - the action flags below answer that. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| sharedBy | EmployeeDto | Who gave the calling account the access it is using. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| ownedBy | EmployeeDto | Who owns the place the entry is shared from - the creator of the room it lies in, or of the personal section that holds it. It is filled in only while the entry is being read through a share, and never for a caller without an account. | [optional] |
| shared | Boolean | Whether at least one external link exists for the entry, whichever kind. It says nothing about accounts and groups - those are counted by the flag for members below. | [optional] |
| sharedForUser | Boolean | Whether at least one account or group has been given rights on the entry directly, as opposed to reaching it through a link or through the room around it. | [optional] |
| sharedExternal | Boolean | Whether one of the entry's links is open to people outside the portal, as opposed to a link that only its own members can follow. This is the flag to watch when the concern is who can reach the content from outside. | [optional] |
| parentShared | Boolean | Whether the entry is reachable because the room or folder around it is shared, rather than through rights of its own. A copy or a move takes the entry out of that scope. | [optional] |
| shortWebUrl | URI (uri) | A shortened address that opens the entry through the link it is being read with. It is an empty string whenever no link applies, which is the usual case for a member browsing their own rooms. | [optional] |
| created | ApiDateTime | When the entry was created, written with the offset of the portal's time zone. For a file restored from an older version this is still the moment the file first appeared. | [optional] |
| createdBy | EmployeeDto | Who created the entry. It is null for a caller without an account, who is told nothing about the portal's members. | [optional] |
| updated | ApiDateTime | When the entry last changed, written with the offset of the portal's time zone. It is never reported as earlier than the creation moment, so the two can be compared safely. | [optional] |
| autoDelete | ApiDateTime | When the entry will disappear on its own, written with the offset of the portal's time zone. It is filled in only where a removal is actually scheduled - something in the trash while the portal cleans it up automatically, or a guest's own documents - so a null means nothing is scheduled rather than that the entry is permanent. | [optional] |
| rootFolderType | FolderType | The section the entry ultimately belongs to, which is what tells a personal document from one inside a room, from a template and from something in the trash or the archive. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| parentRoomType | FolderType | The kind of room the entry lies in, which decides what the room allows - filling forms, public links, indexing. It is null for an entry that is not inside a room at all. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| updatedBy | EmployeeDto | Who changed the entry last. It is null for a caller without an account. | [optional] |
| providerItem | Boolean | Set when the entry is stored on a connected third-party account rather than on the portal, and null when it is stored on the portal. Such an entry is identified by a string rather than a number, and some operations skip it. | [optional] |
| providerKey | String | Which third-party service holds the entry, matching the keys accepted by the third-party operations. It is null for an entry stored on the portal. | [optional] |
| providerId | Integer (int32) | The connected account the entry comes from, for telling apart two connections to the same service. It is null for an entry stored on the portal. | [optional] |
| order | String | The place of the entry in a room where the members arrange the content themselves, given as the position of the entry preceded by the positions of the folders leading to it, separated by dots. It is empty when nothing has been arranged. | [optional] |
| isFavorite | Boolean | Set when the calling account has marked the entry as a favorite, which is what puts it into the favorites listing. For a file that is not marked it is null rather than false. | [optional] |
| fileEntryType | FileEntryType | Tells a folder from a file, and so which of the two shapes the rest of the object has. A room is reported as a folder here. | [optional] [enum: 1, 2] |
| id | String | The identifier to pass back to the other operations of this entry. It is a number for storage on the portal and a string for a connected third-party account, and it is unique only within its own kind, so files and folders may carry the same value. | [optional] |
| rootFolderId | String | The section the entry ultimately lies in, as an identifier that can be listed like any other folder. For an entry inside a room this is the rooms section, not the room. | [optional] |
| originId | String | The folder the entry was deleted from, which is where restoring it puts it back. It is left out of the answer unless the entry is in the trash. | [optional] |
| originRoomId | String | The room the entry was deleted from, left out of the answer for anything that was not deleted out of a room. | [optional] |
| originTitle | String | The name of the folder the entry was deleted from, for showing where it would be restored to. It is null for an entry that is not in the trash. | [optional] |
| originRoomTitle | String | The name of the room the entry was deleted from, null for anything that was not deleted out of a room. | [optional] |
| canShare | Boolean | Whether the calling account may change who has access to the entry, and so whether offering a sharing dialog for it makes sense. It is false in rooms whose access is fixed by the room itself, such as a private one, even for its manager. | [optional] |
| shareSettings | FileEntryDtoInteger_allOf_shareSettings | [optional] [nullable] | |
| security | FileEntryDtoInteger_allOf_security | [optional] [nullable] | |
| availableShareRights | FileEntryDtoInteger_allOf_availableShareRights | [optional] [nullable] | |
| requestToken | String | The token of the link the entry is being read through, which is the value the external-share operations expect and which also has to be carried by the download and preview addresses. It is null whenever the entry is not being read through a link. | [optional] |
| external | Boolean | Set when the link being used was made for this very entry, and false when the entry is reached through a link to the room around it. It is null when no link is involved. | [optional] |
| expirationDate | ApiDateTime | When the link being used stops working, written with the offset of the portal's time zone. It is null for a link that never expires and whenever no link is involved. | [optional] |
| isLinkExpired | Boolean | Set when the link being used has already passed its expiration date, which is why the entry cannot be opened even though it is described here. It is null when no link is involved. | [optional] |
| parentId | String | The folder this one is listed in. For a room it is the root of the section the room lives in, and for an entry opened through a sharing link whose real parent the caller may not read it is the root of the section with the entries shared with them. | [optional] [nullable] |
| filesCount | Integer (int32) | How many files lie directly in the folder, without counting the subfolders. The roots of the Rooms, room templates and default templates sections always report 0, because the number is not collected for them. | [optional] |
| foldersCount | Integer (int32) | How many subfolders lie directly in the folder. For an AI room the two service subfolders it always holds are subtracted, so the number matches what a listing of it shows, and the roots of the Rooms and templates sections report 0. | [optional] |
| isShareable | Boolean | Whether the caller may hand out access to the folder. It is filled in only for the folder a folder-contents answer is about, and is null in every other answer, so null says nothing about the sharing rights. | [optional] [nullable] |
| new | Integer (int32) | How many entries inside the folder the caller has not opened yet, the number drawn as the badge on it. An account that turned the badges off in its own settings always reads 0 here, so 0 alone does not prove that everything has been seen. | [optional] |
| mute | Boolean | Whether the caller silenced the notifications of this room: true means no message about its activity reaches them. The choice belongs to the reading account rather than to the room, so two members of one room read different values. | [optional] |
| tags | List | The names of the tags attached to the room. Empty for a folder that is not a room, since only rooms carry tags, and the names are the ones from the portal tag catalogue. | [optional] [nullable] |
| logo | Logo | The addresses of the room logo in four sizes, together with the colour and the built-in cover that are drawn when no logo was uploaded. A room without a logo answers with four empty addresses rather than with null, and the field is null for a folder that is not a room. | [optional] |
| pinned | Boolean | Whether the caller pinned the room to the top of their own room list. Pinning is personal and is lost when the room is archived. | [optional] |
| roomType | RoomType | The kind of the room, which decides the default access rules of its members. Null for a folder that is not a room. | [optional] [enum: 1, 2, 5, 6, 8, 9] |
| private | Boolean | Whether the room is a private one, which limits it to the accounts invited into it and needs encryption keys set up for each of them. | [optional] |
| indexing | Boolean | Whether the contents of the room are kept in an explicit numbered order, the one reported as order on each entry, instead of being left to the sorting the reader asks for. | [optional] |
| denyDownload | Boolean | Whether downloading and printing the contents of the room is forbidden, which leaves its members with viewing and editing in the editor. | [optional] |
| lifetime | RoomDataLifetimeDto | The rule by which the files of the room are removed once they grow old. Null when the room has no such rule, which is also what is reported after the rule is switched off, because switching it off erases it. | [optional] |
| watermark | WatermarkDto | The watermark stamped over the documents of the room while they are viewed and printed. Null when the room has no watermark, and for every folder that is not a room. | [optional] |
| type | FolderType | The part the folder plays inside its room: one of the service folders of the form-filling flow, or the knowledge and result storages of an AI room. It stays null for an ordinary folder and for the room itself, so it does not describe folders in general. | [optional] [enum: 0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] |
| inRoom | Boolean | Whether the caller holds the room through an invitation of their own: true for the account that created it and for a member invited personally, false when the access comes from a group they belong to, and null for a folder that is not a room. | [optional] [nullable] |
| quotaLimit | Long (int64) | How much space the files of the room may take, in bytes. It is the limit set on this room, or the portal default for rooms when none was set. Null when the tariff of the portal does not count room statistics, when room quotas are switched off, when the room lies in the archive or the trash, or when the caller may only read it. | [optional] [nullable] |
| isCustomQuota | Boolean | Whether quotaLimit is a limit set on this room (true) or the portal default for rooms (false). Null exactly when quotaLimit is null. | [optional] [nullable] |
| usedSpace | Long (int64) | How much the files of the room take, in bytes, as of the last time the counter was recomputed. The counter is refreshed when a file operation finishes, so a read right after an upload or a deletion can still report the previous figure. Null for a folder that is not a room. | [optional] [nullable] |
| passwordProtected | Boolean | Whether the sharing link the folder was opened through asks for a password that has not been entered yet. While it is true the contents stay unreadable; send the password to POST api/2.0/files/share/{key}/password first. Null when the folder was not reached through a link. | [optional] [nullable] |
| expired | Boolean | Deprecated, read isLinkExpired instead: whether the sharing link the folder was opened through has run out of its lifetime. | [optional] [nullable] |
| chatSettings | ChatSettingsDto | The chat configuration of an AI room. Only the system prompt is reported here, whatever else the room stores, and the field is null for every folder that is not an AI room. | [optional] |
| rootRoomType | RoomType | The kind of the room the folder lies in. It is filled in only for the folder a folder-contents answer is about, and only when that room is an AI room, so it is null in every other answer and for every other room kind. | [optional] [enum: 1, 2, 5, 6, 8, 9] |
| saveFormAsXLSX | Boolean | Whether the answers collected in this form-filling room are also gathered into a spreadsheet next to the completed copies. Filled in for form-filling rooms only. | [optional] [nullable] |
| sendFormToExternalDB | Boolean | Whether the answers collected in this form-filling room are also pushed into the external database configured for the portal. Filled in for form-filling rooms only. | [optional] [nullable] |
| originalFormId | Integer (int32) | The form the completed copies in this folder were filled from, taken from the copy submitted last. Null while the folder holds no completed copy, and for every folder that does not collect them. | [optional] [nullable] |
Model FolderIntegerArrayWrapper
The successful API response containing the list of FolderDtoInteger objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FolderDtoInteger objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FolderIntegerWrapper
The successful API response containing the FolderDtoInteger object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FolderDtoInteger | The FolderDtoInteger object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FolderLinkRequest
The external link of a folder, as it is to be created or rewritten.
| Name | Type | Description | Notes |
|---|---|---|---|
| linkId | UUID (uuid) | Which link the request addresses: the identifier of an existing link rewrites that link, while an identifier that is not in use, the empty one included, creates a new link. Take an existing identifier from GET api/2.0/files/folder/{id}/links. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| access | FileShare | The rights a visitor following the link is given. The value that grants nothing revokes the link instead of setting it, and the answer is then empty. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| expirationDate | ApiDateTime | The moment the link stops working, sent as an ISO-8601 stamp. A moment that lies in the past is ignored, and leaving the field out gives the link no expiry. | [optional] |
| title | String | The name the link is listed under for the people who manage the folder; a visitor following it never sees the name. | [optional] [example: Public link] [minLength: 0] [maxLength: 255] [nullable] |
| password | String | The secret a visitor has to enter before the link opens. Leave it out for a link that opens without one; the secret itself is never given back, only the fact that one is set. | [optional] [example: p@ssw0rd] [minLength: 0] [maxLength: 255] [nullable] |
| denyDownload | Boolean | Whether visitors are left with viewing alone: with true downloading and copying through the link are blocked, with false they are allowed. | [optional] [example: false] |
| internal | Boolean | Whether the link admits signed-in portal members only: with true a visitor has to sign in before the link opens, with false anyone holding the address may follow it. | [optional] [example: false] |
| primary | Boolean | Whether this link becomes the primary link of the folder, the one the Copy link action of a client hands out; a folder has one primary link at a time. | [optional] [example: true] |
Model FolderStringArrayWrapper
The successful API response containing the list of FolderDtoString objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FolderDtoString objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FolderStringWrapper
The successful API response containing the FolderDtoString object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FolderDtoString | The FolderDtoString object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FolderType
Possible values:
0— Default (DEFAULT)1— Coomon (COMMON)2— Bunch (BUNCH)3— Trash (TRASH)5— User (USER)6— Share (SHARE)8— Projects (Projects)10— Favourites (Favorites)11— Recent (Recent)12— Templates (Templates)13— Privacy (Privacy)14— Virtual rooms (VirtualRooms)15— Filling forms room (FillingFormsRoom)16— Editing room (EditingRoom)19— Custom room (CustomRoom)20— Archive (Archive)21— Thirdparty backup (ThirdpartyBackup)22— Public room (PublicRoom)25— Ready form folder (ReadyFormFolder)26— In process form folder (InProcessFormFolder)27— Form filling folder done (FormFillingFolderDone)28— Form filling folder in progress (FormFillingFolderInProgress)29— Virtual Data Room (VirtualDataRoom)30— Room templates folder (RoomTemplates)31— AI Room (AiRoom)32— Knowledge (Knowledge)33— Result storage (ResultStorage)34— AI Agents (AiAgents)35— Default Templates (DefaultTemplates)36— Forms (Forms)
Model FormFillingManageAction
Possible values:
0— Stop (Stop)1— Resume (Resume)2— Start (Start)3— Edit (Edit)
Model FormFillingStatus
Possible values:
0— None (None)1— Draft (Draft)2— You turn (YouTurn)3— In progress (InProgress)4— Complete (Complete)5— Stoped (Stoped)
Model FormMetadata
The metadata of a single form field.
| Name | Type | Description | Notes |
|---|---|---|---|
| key | String | The form field key. | [optional] [example: name] [nullable] |
| type | String | The form field type. | [optional] [example: text] [nullable] |
| format | String | The form field format. | [optional] [example: date] [nullable] |
| possibleValues | List | The list of possible values for the form field. | [optional] [example: []] [nullable] |
Model FormResultsDto
One completed copy of a form, with the values that were entered into it.
| Name | Type | Description | Notes |
|---|---|---|---|
| createOn | Date (date-time) | When the portal recorded this copy, in UTC: the moment the filled copy was completed and its data indexed, not the moment the form itself was made. | [optional] [example: 2025-01-01T00:00:00] |
| formsData | List | The values that were entered into this copy, one entry per field, preceded by an entry keyed FormNumber that carries the number of the copy and is what the submissions are ordered by. Fields holding a picture or a signature are left out of the record, so a field missing here was not necessarily left blank. | [optional] [example: [{key=field1, value=Answer}]] [nullable] |
Model FormRole
The form role.
| Name | Type | Description | Notes |
|---|---|---|---|
| roomId | Integer (int32) | The room ID. | [optional] [example: 1] |
| roleName | String | The role name. | [optional] [example: Manager] [nullable] |
| roleColor | String | The role color. | [optional] [example: #4781D1] [nullable] |
| userId | UUID (uuid) | The user ID. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| sequence | Integer (int32) | The role sequence. | [optional] [example: 12] |
| submitted | Boolean | Specifies if the role was submitted or not. | [optional] [example: false] |
| openedAt | Date (date-time) | The date and time when the role was opened. | [optional] [example: 2026-01-01T10:00:00Z] |
| submissionDate | Date (date-time) | The date and time when the role was submitted. | [optional] [example: 2026-01-01T10:00:00Z] |
Model FormRoleArrayWrapper
The successful API response containing the list of FormRoleDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FormRoleDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FormRoleDto
One role of a PDF form, with the state the turn of that role is in.
| Name | Type | Description | Notes |
|---|---|---|---|
| roleName | String | The name the role was given when the form was laid out, unique within that form. It is the value that names the role in the calls which change or stop the filling. | [required] [example: Approver] [nullable] |
| roleColor | String | The colour a client paints the role with, as a hexadecimal RGB value; empty when the role mapping assigned none. | [optional] [example: #FF5733] [nullable] |
| user | EmployeeFullDto | The account the role was assigned to, which is the person expected to fill this part of the form. | [optional] |
| sequence | Integer (int32) | The turn this role takes: the roles come back ordered by this number, roles sharing a number are filled in parallel, and a role with a higher number waits until every lower one has been submitted. | [required] [example: 1] |
| submitted | Boolean | Reports whether this role has already handed in its part. The lowest sequence number that still holds an unsubmitted role is the turn the form as a whole is waiting on. | [required] [example: false] |
| stopedBy | EmployeeFullDto | The account that interrupted the filling. It is filled in on the one role the filling was stopped at and stays empty on every other role, and on all of them while the filling runs normally. | [optional] |
| history | Map (date-time) | When the role passed through the stages of its turn, keyed by stage: 0 is the moment the form was opened for it, 1 the moment it was submitted and 2 the moment the filling was stopped at it. The times are given in the time zone of the portal, and only the stages that have actually happened are present, so an empty object means the role has not been opened yet. | [optional] [example: {0=2025-01-15T10:30:00}] |
| roleStatus | FormFillingStatus | Where the role stands in the queue: roles of earlier turns are reported as complete, roles of later turns as a draft, and the role whose turn it is as either yours to fill or in progress, depending on whether that person has already opened the form. The role the filling was stopped at is reported as stopped whatever its turn. | [optional] [enum: 0, 1, 2, 3, 4, 5] |
Model FormSubmissionsDto
All completed copies of a form, together with the description of the fields they were filled into.
| Name | Type | Description | Notes |
|---|---|---|---|
| metadata | List | Describes the fields of the form version that is being filled - the key each value is stored under, the type and format of the field and, where the field offers a fixed set of answers, those answers - in the order the fields are laid out, which is the order to build a results table in. It comes back empty when the portal holds no indexed description of that version. | [optional] [example: []] [nullable] |
| submissions | List | One entry per completed copy, ordered by the copy number that formsData carries. An empty list means nothing has been completed for the version that is currently being filled; the copies of earlier versions of the form are not reported here. | [optional] [example: []] [nullable] |
Model FormSubmissionsWrapper
The successful API response containing the FormSubmissionsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FormSubmissionsDto | The FormSubmissionsDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FormsItemArrayWrapper
The successful API response containing the list of FormsItemDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of FormsItemDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model FormsItemData
The data of the separate form item.
| Name | Type | Description | Notes |
|---|---|---|---|
| key | String | The form data key. | [optional] [example: first_name] [nullable] |
| tag | String | The form data tag. | [optional] [example: personal_info] [nullable] |
| value | String | The form data value. | [optional] [example: John] [nullable] |
| type | String | The form data type. | [optional] [example: text] [nullable] |
Model FormsItemDto
One field of a form, offered as a filter over the copies gathered in a form-filling room.
| Name | Type | Description | Notes |
|---|---|---|---|
| key | String | The name of the field as it is written in the form; send it back as formsItemKey to keep only the completed copies whose field of that name holds a value. <example>first_name</example> | [optional] [nullable] |
| type | String | The kind of value the field holds, a text box or a checkbox for instance; send it back as formsItemType beside the key. <example>text</example> | [optional] [nullable] |
Model GenerateDocxToolCallParametersDto
The generate docx tool call parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| description | String | What the generated text document should contain, in the words the request was made in. | [required] [example: A quarterly report on sales with a summary table] [nullable] |
Model GenerateFormToolCallParametersDto
The generate form tool call parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| description | String | What the generated fillable form should ask for, in the words the request was made in. | [required] [example: An employee onboarding form with name, start date and department] [nullable] |
Model GeneratePresentationToolCallParametersDto
The generate presentation tool call parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| topic | String | What the generated presentation is about. | [optional] [example: Sales results for 2026] [nullable] |
| slideCount | String | How many slides to generate, as the request spelled it. | [optional] [example: 12] [nullable] |
| style | String | The visual style the slides should be generated in. | [optional] [example: minimal] [nullable] |
Model GetReferenceDataDtoInteger
The body of a spreadsheet reference request: the source spreadsheet, and the three ways of naming the document it refers to, which are tried in the order they are described.
| Name | Type | Description | Notes |
|---|---|---|---|
| fileKey | String | The id of the referenced file as the document service recorded it in the formula. It is tried first, and only when instanceId names this portal. | [required] [example: 512] [nullable] |
| instanceId | String | The portal the reference was made on, as the document service recorded it. Only the id of this portal makes the file key resolvable; any other value falls through to the path and the link. | [required] [example: 1] [nullable] |
| sourceFileId | Integer (int32) | The spreadsheet the formula sits in. The path is resolved against it - the referenced file is looked for among the files lying next to it - and it is the file whose read access is checked. | [optional] [example: 1] |
| path | String | The title of the referenced file exactly as the formula spells it, matched against the files lying next to the source file. It is tried after the file key, and only when no link is given. | [optional] [example: Budget 2026.xlsx] [nullable] |
| link | String | The web address the formula points at, an editor link of this portal or one of its short links. It is tried last, and an address belonging to another site is not resolved at all but handed back for the client to follow as it is. | [optional] [example: https://portal.example.com/doc/512] [nullable] |
Model GobackConfig
The settings for the Open file location menu button and upper right corner button.
| Name | Type | Description | Notes |
|---|---|---|---|
| url | String | Where the user is taken when they leave the document, normally the folder or the room it lies in. It is empty when there is nowhere to return to, as in a framed opening. | [optional] [example: https://portal.example.com/rooms/shared/42] [nullable] |
Model GroupMemberSecurityRequestArrayWrapper
The successful API response containing the list of GroupMemberSecurityRequestDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of GroupMemberSecurityRequestDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model GroupMemberSecurityRequestDto
One member of a portal group together with the access that member has on the file or folder the group was granted rights to. Every line of the answer describes the same file or folder and differs only in the member and in the level that applies to them.
| Name | Type | Description | Notes |
|---|---|---|---|
| user | EmployeeFullDto | The member the line is about, as the portal reports the account: the display name, the avatar and the portal role to show next to the access level. | [required] |
| groupAccess | FileShare | The level granted to the group as a whole on this file or folder. It belongs to the group record rather than to the member, so the same value repeats on every line of the answer; a group whose record was set back to none is answered with an empty list instead. | [required] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| userAccess | FileShare | The level granted to this member alone on the same file or folder, or null when the member has no record of their own and the group level is what applies. The member who created the file or folder is always reported here as a room manager, whatever their own record says. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| overridden | Boolean | Whether userAccess is the level that decides what the member may do. When it is false the member inherits groupAccess, and the creator of the file or folder is always reported as overridden because of the room manager level forced onto them. | [required] [example: true] |
| canEditAccess | Boolean | Whether the caller may still change the level of this member. It comes back false on the line of the member who created the file or folder, on the line of the caller themselves, and on every line at once when the caller may read the file or folder but not manage access to it. | [required] [example: true] |
| owner | Boolean | Whether this member created the file or folder - the owner of the entry, not the owner of the group. Their level is reported as a room manager one and cannot be taken away through this group. | [required] [example: false] |
Model GroupSummaryDto
The group summary parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | The group ID. | [required] [example: 00000000-0000-0000-0000-000000000000] |
| name | String | The group name. | [required] [example: Group Name] [nullable] |
| manager | String | The group manager. | [optional] [example: Jake.Zazhitski] [nullable] |
| isSystem | Boolean | Indicates whether the group is a system group. | [optional] [example: false] [nullable] |
Model HideConfirmConvertRequestDto
The body of the conversion prompt switch: which of the two prompts to hide.
| Name | Type | Description | Notes |
|---|---|---|---|
| save | Boolean | Chooses the prompt to hide rather than the state to store: true hides the prompt that offers to keep a copy in the original format when a document is converted, false hides the prompt that offers to open the conversion result. Each of the two flags is stored separately for the calling account, and both are one-way - the portal can hide a prompt but has no way to show it again. | [optional] [example: true] |
Model HistoryAction
The action performed on the file.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | MessageAction | The action performed on the file. | [optional] [enum: 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, 4025, 4026, 4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5068, 5069, 5070, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, 5119, 5120, 5121, 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130, 5131, 5132, 5133, 5150, 5151, 5152, 5153, 5154, 5155, 5156, 5157, 5158, 5159, 5160, 5161, 5162, 5163, 5201, 5202, 5203, 5204, 5205, 5206, 5207, 5501, 5502, 5503, 6000, 6001, 6002, 6003, 6004, 6005, 6006, 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 6018, 6019, 6020, 6021, 6022, 6023, 6024, 6025, 6026, 6027, 6028, 6029, 6030, 6031, 6032, 6033, 6034, 6035, 6036, 6037, 6038, 6039, 6040, 6041, 6042, 6043, 6044, 6045, 6046, 6047, 6048, 6049, 6050, 6051, 6052, 6053, 6054, 6055, 6056, 6057, 6058, 6059, 6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069, 6070, 6071, 6072, 6073, 6074, 6075, 6076, 6077, 6078, 6079, 6080, 6081, 6082, 6083, 6084, 6085, 6086, 6087, 6088, 6089, 6090, 6091, 6092, 6093, 6094, 6095, 6096, 6097, 6098, 6099, 6100, 6101, 6102, 6103, 6104, 6105, 6106, 6107, 6108, 6109, 7000, 7001, 7002, 7003, 7004, 7005, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9908, 9909, -1] |
| key | String | The action performed on the file. | [optional] [example: fileUploaded] [nullable] |
Model HistoryArrayWrapper
The successful API response containing the list of HistoryDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of HistoryDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model HistoryData
The history data.
| Name | Type | Description | Notes |
|---|---|---|---|
| initiatorName | String | The name of the action initiator. | [optional] [example: John Doe] [nullable] |
Model HistoryDto
One record of the activity log of a file or a folder.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The identifier of the record, which tells two records of the same action apart and stays stable as long as the portal keeps the log. | [required] [example: 123] |
| action | HistoryAction | What happened - the kind of event the record stands for, such as a file being uploaded, renamed, moved or shared - with the key a client can key its own wording off. | [required] |
| initiator | EmployeeDto | Who caused the event. For an event caused by a visitor following an external link only the name they gave is filled in, the account fields staying empty. | [required] |
| date | ApiDateTime | When the event happened, written with the offset of the portal's time zone. | [required] |
| data | HistoryData | The history data. Absent for actions that carry no payload of their own - changing a room's logo, icon colour or cover, whose interpreter returns no data (see RoomLogoChangedInterpreter). It used to be declared required, which put it in the OpenAPI document's required list while the null-dropping serializer left it out of the response, so a generated client threw on any history page holding one of those entries. | [optional] |
| related | List | The records folded into this one because they belong to the same action, the separate files of one upload for instance. It is empty when the record stands alone, and the records inside it carry no further nesting. | [optional] [example: [{id=124, action=0}]] [nullable] |
Model ICompressWrapper
The successful API response containing the ICompress object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | Object | The ICompress object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model IconRequest
The icon to set on a room group.
| Name | Type | Description | Notes |
|---|---|---|---|
| icon | String | The identifier of one of the built-in covers listed by GET api/2.0/files/rooms/covers. An empty string clears the icon of the group, null or a missing member keeps the current one, and anything else is refused. | [optional] [example: heart] [nullable] |
Model InfoConfigDto
The facts the editor information panel shows about the open document.
| Name | Type | Description | Notes |
|---|---|---|---|
| favorite | Boolean | Whether the caller has this document among their favorites. It is empty when favorites do not apply - for an anonymous caller, for a guest, and for an encrypted document. | [optional] [example: false] [nullable] |
| folder | String | The place of the document as a readable path, its folders joined from the root downwards. It is empty in the embedded layout, which shows no such panel. | [optional] [example: My documents \\ Reports] [nullable] |
| owner | String | The display name of the owner of the document. It is empty for an anonymous session. | [optional] [example: John Doe] [nullable] |
| sharingSettings | List | Who the document is shared with, as the information panel lists it. An empty list means it is shared with nobody beyond its owner. | [optional] [example: []] [nullable] |
| type | EditorType | The layout the information panel is rendered for. | [optional] [enum: 0, 1, 2] |
| uploaded | String | When the document was created on the portal, already formatted for reading in the culture of the caller rather than as a machine timestamp. | [optional] [example: 01/01/2026 12:00 PM] [nullable] |
Model ItemKeyValuePairBooleanString
One entry of a keyed collection, carried as an explicit pair of key and value fields instead of as a member of a JSON object, so that the key is not restricted to a string and the entries keep the order they are sent in.
| Name | Type | Description | Notes |
|---|---|---|---|
| key | Boolean | The left half of the pair. Where the pair configures something, this is the identifier the value belongs to - a setting name, a module id, a logo slot; where the pair reports the result of a call, this is the result itself, such as the flag telling whether the call succeeded. Which of the two it is, and which keys are accepted, is stated by the operation that sends or returns the pair. | [optional] |
| value | String | The right half of the pair: what is assigned to the key next to it, or what is reported for it. Its meaning and its accepted values follow from the key, so read them from the operation that sends or returns the pair. | [optional] [nullable] |
Model ItemKeyValuePairBooleanStringWrapper
The successful API response containing the ItemKeyValuePairBooleanString object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ItemKeyValuePairBooleanString | The ItemKeyValuePairBooleanString object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model LinkType
Possible values:
0— Invitation (Invitation)1— External (External)
Model Location
Possible values:
1— Room (Room)2— Documents (Documents)3— Link (Link)
Model LockFileParameters
The lock state a file is to be put into.
| Name | Type | Description | Notes |
|---|---|---|---|
| lockFile | Boolean | The state to reach: true locks the file, which blocks editing, renaming and deleting for everybody but the account that locked it and the room admins, and drops the others out of a running editing session; false releases the lock. | [optional] [example: true] |
Model Logo
The room logo information.
| Name | Type | Description | Notes |
|---|---|---|---|
| original | String | The original logo. | [required] [example: https://portal.example.com/logo/original.png] [nullable] |
| large | String | The large logo. | [required] [example: https://portal.example.com/logo/large.png] [nullable] |
| medium | String | The medium logo. | [required] [example: https://portal.example.com/logo/medium.png] [nullable] |
| small | String | The small logo. | [required] [example: https://portal.example.com/logo/small.png] [nullable] |
| color | String | The logo color. | [optional] [example: #4781D1] [nullable] |
| cover | LogoCover | The logo cover. | [optional] |
Model LogoConfigDto
The logo the editor shows, resolved for the file type and the layout of this opening.
| Name | Type | Description | Notes |
|---|---|---|---|
| image | String | The logo for the current layout and file type, as the portal branding defines it. | [optional] [example: https://portal.example.com/logo/editor.png] [nullable] |
| imageDark | String | The variant for a dark interface theme. | [optional] [example: https://portal.example.com/logo/editor-dark.png] [nullable] |
| imageLight | String | The variant for a light interface theme. | [optional] [example: https://portal.example.com/logo/editor-light.png] [nullable] |
| imageEmbedded | String | The variant for the framed viewer. It is empty in every layout but the embedded one. | [optional] [example: https://portal.example.com/logo/editor-embedded.png] [nullable] |
| url | String | Where clicking the logo takes the user. | [optional] [example: https://portal.example.com] [nullable] |
| visible | Boolean | Whether the logo is shown at all; the mobile layout hides it. | [optional] [example: true] |
Model LogoCover
The logo cover information.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The logo cover ID. | [required] [example: default_cover] [nullable] |
| data | String | The logo cover data. | [required] [example: base64-image-data...] [nullable] |
Model LogoRequest
The part of an uploaded picture to use as the logo.
| Name | Type | Description | Notes |
|---|---|---|---|
| tmpFile | String | The picture to cut the logo out of, named by the path that POST api/2.0/files/logos returned for it. The path may be used once and only by the account that uploaded it. | [required] [example: /temp/logo_a1b2c3.png] [minLength: 1] |
| x | Integer (int32) | The left edge of the rectangle cut out of the uploaded picture, counted in pixels from its left side. The picture itself was already scaled down to fit 1280 by 1280 pixels when it was uploaded. | [optional] [example: 0] [min: 0] [max: 1280] |
| y | Integer (int32) | The top edge of the rectangle cut out of the uploaded picture, counted in pixels from its top. | [optional] [example: 0] [min: 0] [max: 1280] |
| width | Integer (int32) | How wide a piece of the uploaded picture to cut out, in pixels. It has to be sent together with the height, and the portal builds the four logo sizes out of the piece. | [optional] [example: 300] [min: 1] [max: 1280] |
| height | Integer (int32) | How tall a piece of the uploaded picture to cut out, in pixels. It has to be sent together with the width. | [optional] [example: 300] [min: 1] [max: 1280] |
Model ManageFormFillingDtoInteger
The action to apply to the filling of a PDF form.
| Name | Type | Description | Notes |
|---|---|---|---|
| formId | Integer (int32) | The PDF form the action applies to. This is the value the operation reads, rather than the identifier in its route, and the two are to be sent the same. | [required] [example: 1] |
| action | FormFillingManageAction | The action to apply. | [optional] [enum: 0, 1, 2, 3] |
Model MentionMessageWrapper
The mention notification to send: what to say, whom to tell and where in the document the mention sits.
| Name | Type | Description | Notes |
|---|---|---|---|
| actionLink | ActionLinkConfig | The place in the document the notification link should open at, as the editor reports it when the mention is made. Left out, the link opens the file at its beginning. | [optional] |
| emails | List | The addresses to notify. Only an address that belongs to a portal account receives a mail; an unknown address is skipped, and the answer then carries the access list of the file so that the client can invite its owner. | [optional] [example: [user1@example.com, user2@example.com]] [nullable] |
| message | String | The note shown next to the link in the mail. Only its first 200 characters are sent, and a value longer than the field allows is refused. | [optional] [example: Please take a look at the second paragraph] [minLength: 0] [maxLength: 255] [nullable] |
Model MentionWrapper
A user the editor may offer: to be mentioned in a comment, or to be picked when protecting a document.
| Name | Type | Description | Notes |
|---|---|---|---|
| user | UserInfo | The account itself, in the shape the people listings use. | [optional] |
| String (email) | Where a mention notification for this user is delivered. | [optional] [example: user@example.com] [nullable] | |
| id | String | The account id as text, the same value the account object carries; it is what identifies the user in a sharing request built from this list. | [optional] [example: user_0001] [nullable] |
| image | String | An absolute address of the medium-sized avatar. A generated default avatar is reported when the user never uploaded one, so the field is never empty. | [optional] [example: https://portal.example.com/avatar/user_0001.png] [nullable] |
| hasAccess | Boolean | Not filled in by the operations that return this list: it always comes back false. Whether a user can already open the document has to be read from the sharing settings of the file. | [optional] [example: true] |
| name | String | The name to display, assembled the way the portal is configured to show names. | [optional] [example: John Doe] [nullable] |
Model MentionWrapperArrayWrapper
The successful API response containing the list of MentionWrapper objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of MentionWrapper objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model MessageAction
[1000 - Login success, 1001 - Login success via social account, 1002 - Login fail invalid combination, 1003 - Login fail social account not found, 1004 - Login fail disabled profile, 1005 - Login fail, 1006 - Logout, 1007 - Login success via sms, 1008 - Login fail via sms, 1009 - Login fail ip security, 1010 - Login success via api, 1011 - Login success via social app, 1012 - Login success via api sms, 1013 - Login fail via api, 1014 - Login fail via api sms, 1015 - Login success via SSO, 1016 - Session started, 1017 - Session completed, 1018 - Login fail via SSO, 1019 - Login success via api social account, 1020 - Login fail via api social account, 1021 - Login succes via tfa app, 1022 - Login fail via Tfa app, 1023 - Login fail brute force, 1024 - Login success via api tfa, 1025 - Login fail via api tfa, 1026 - Login fail recaptcha, 1027 - Authorization link activated, 1028 - Login success via OAuth 2.0, 1029 - Login success via login and password, 4000 - User created, 4001 - Guest created, 4002 - User created via invite, 4003 - Guest created via invite, 4004 - User activated, 4005 - Guest activated, 4006 - User updated, 4007 - User updated language, 4008 - User added avatar, 4009 - User deleted avatar, 4010 - User updated avatar thumbnails, 4011 - User linked social account, 4012 - User unlinked social account, 4013 - User sent activation instructions, 4014 - User sent email change instructions, 4015 - User sent password change instructions, 4016 - User sent delete instructions, 4017 - User updated password, 4018 - User deleted, 4019 - Users updated type, 4020 - Users updated status, 4021 - Users sent activation instructions, 4022 - Users deleted, 4023 - Sent invite instructions, 4024 - User imported, 4025 - Guest imported, 4026 - Group created, 4027 - Group updated, 4028 - Group deleted, 4029 - User updated mobile number, 4030 - User data reassigns, 4031 - User data removing, 4032 - User connected tfa app, 4033 - User disconnected tfa app, 4034 - User logout active connections, 4035 - User logout active connection, 4036 - User logout active connections for user, 4037 - Send join invite, 5000 - File created, 5001 - File renamed, 5002 - File updated, 5003 - File created version, 5004 - File deleted version, 5005 - File updated revision comment, 5006 - File locked, 5007 - File unlocked, 5008 - File updated access, 5009 - File downloaded, 5010 - File downloaded as, 5011 - File uploaded, 5012 - File imported, 5013 - File copied, 5014 - File copied with overwriting, 5015 - File moved, 5016 - File moved with overwriting, 5017 - File moved to trash, 5018 - File deleted, 5019 - Folder created, 5020 - Folder renamed, 5021 - Folder updated access, 5022 - Folder copied, 5023 - Folder copied with overwriting, 5024 - Folder moved, 5025 - Folder moved with overwriting, 5026 - Folder moved to trash, 5027 - Folder deleted, 5028 - ThirdParty created, 5029 - ThirdParty updated, 5030 - ThirdParty deleted, 5031 - Documents ThirdParty settings updated, 5032 - Documents overwriting settings updated, 5033 - Documents uploading formats settings updated, 5034 - User file updated, 5035 - File converted, 5036 - File send access link, 5037 - Document service location setting, 5038 - Authorization keys setting, 5039 - Full text search setting, 5040 - Start transfer setting, 5041 - Backup started, 5042 - License key uploaded, 5043 - File change owner, 5044 - File restore version, 5045 - Document send to sign, 5046 - Document sign complete, 5047 - User updated email, 5048 - Documents store forcesave, 5049 - Documents forcesave, 5050 - Start storage encryption, 5053 - Start storage decryption, 5054 - File opened for change, 5055 - File marked as favorite, 5056 - File removed from favorite, 5057 - Folder downloaded, 5058 - File removed from list, 5059 - Folder removed from list, 5060 - File external link access updated, 5061 - Trash emptied, 5062 - File revision downloaded, 5063 - File marked as read, 5064 - File readed, 5065 - Folder marked as read, 5066 - Folder updated access for, 5068 - File updated access for, 5069 - Documents external share settings updated, 5070 - Room created, 5071 - Room renamed, 5072 - Room archived, 5073 - Room unarchived, 5074 - Room deleted, 5075 - Room update access for user, 5076 - Tag created, 5077 - Tags deleted, 5078 - Added room tags, 5079 - Deleted room tags, 5080 - Room logo created, 5081 - Room logo deleted, 5082 - Room invitation link updated, 5083 - Documents keep new file name settings updated, 5084 - Room remove user, 5085 - Room create user, 5086 - Room invitation link created, 5087 - Room invitation link deleted, 5088 - Room external link created, 5089 - Room external link updated, 5090 - Room external link deleted, 5091 - File external link created, 5092 - File external link updated, 5093 - File external link deleted, 5094 - Room group added, 5095 - Room update access for group, 5096 - Room group remove, 5097 - Room external link revoked, 5098 - Room external link renamed, 5099 - File uploaded with overwriting, 5100 - Room copied, 5101 - Documents display file extension updated, 5102 - Room color changed, 5103 - Room cover changed, 5104 - Room indexing changed, 5105 - Room deny download changed, 5106 - Room index export saved, 5107 - Folder index changed, 5108 - Folder index reordered, 5109 - Room deny download enabled, 5110 - Room deny download disabled, 5111 - File index changed, 5112 - Room watermark set, 5113 - Room watermark disabled, 5114 - Room index export saved, 5115 - Room indexing disabled, 5116 - Room life time set, 5117 - Room life time disabled, 5118 - Room invite resend, 5119 - File version deleted, 5120 - File custom filter enabled, 5121 - File custom filter disabled, 5122 - Folder external link created, 5123 - Folder external link updated, 5124 - Folder external link deleted, 5125 - Backup completed, 5126 - Backup failed, 5127 - Scheduled backup started, 5128 - Scheduled backup completed, 5129 - Scheduled backup failed, 5130 - Scheduled backup deleted, 5131 - Backup cancelled, 5132 - Restore started, 5133 - Restore cancelled, 5150 - Form started to fill, 5151 - Form partially filled, 5152 - Form completely filled, 5153 - Form stopped, 5154 - AI agent created, 5155 - AI agent renamed, 5156 - AI agent deleted, 5157 - MCP server added to AI agent, 5158 - MCP server deleted from AI agent, 5159 - Room change owner, 5160 - Documents default templates settings updated, 5161 - Private room encryption key created, 5162 - Private room encryption key updated, 5163 - Private room encryption key deleted, 5201 - File saved, user quota exceeded, 5202 - File not saved due to user quota exceeded, 5203 - File saved, room quota exceeded, 5204 - File not saved due to room quota exceeded, 5205 - File saved, tenant quota exceeded, 5206 - File not saved due to tenant quota exceeded, 5207 - Documents show quick actions updated, 5501 - Ldap enabled, 5502 - Ldap disabled, 5503 - LDAP synchronization completed, 6000 - Language settings updated, 6001 - Time zone settings updated, 6002 - Dns settings updated, 6003 - Trusted mail domain settings updated, 6004 - Password strength settings updated, 6005 - Two factor authentication settings updated, 6006 - Administrator message settings updated, 6007 - Default start page settings updated, 6008 - Products list updated, 6009 - Administrator added, 6010 - Administrator opened full access, 6011 - Administrator deleted, 6012 - Users opened product access, 6013 - Groups opened product access, 6014 - Product access opened, 6015 - Product access restricted, 6016 - Product added administrator, 6017 - Product deleted administrator, 6018 - Greeting settings updated, 6019 - Team template changed, 6020 - Color theme changed, 6021 - Owner sent change owner instructions, 6022 - Owner updated, 6023 - Owner sent portal deactivation instructions, 6024 - Owner sent portal delete instructions, 6025 - Portal deactivated, 6026 - Portal deleted, 6027 - Login history report downloaded, 6028 - Audit trail report downloaded, 6029 - SSO enabled, 6030 - SSO disabled, 6031 - Portal access settings updated, 6032 - Cookie settings updated, 6033 - Mail service settings updated, 6034 - Custom navigation settings updated, 6035 - Audit settings updated, 6036 - Two factor authentication disabled, 6037 - Two factor authentication enabled by sms, 6038 - Two factor authentication enabled by tfa app, 6039 - Portal renamed, 6040 - Quota per room changed, 6041 - Quota per room disabled, 6042 - Quota per user changed, 6043 - Quota per user disabled, 6044 - Quota per portal changed, 6045 - Quota per portal disabled, 6046 - Form submit, 6047 - Form opened for filling, 6048 - Custom quota per room default, 6049 - Custom quota per room changed, 6050 - Custom quota per room disabled, 6051 - Custom quota per user default, 6052 - Custom quota per user changed, 6053 - Custom quota per user disabled, 6054 - DevTools access settings changed, 6055 - Webhook created, 6056 - Webhook updated, 6057 - Webhook deleted, 6058 - Created api key, 6059 - Update api key, 6060 - Deleted User api key, 6061 - Customer wallet topped up, 6062 - Customer operation performed, 6063 - Customer operations report downloaded, 6064 - Customer wallet top up settings updated, 6065 - Customer subscription updated, 6066 - Promotional banners visibility settings changed, 6067 - Customer wallet services settings updated, 6068 - Quota per AI agent changed, 6069 - Quota per AI agent disabled, 6070 - Custom quota per AI agent default, 6071 - Custom quota per AI agent changed, 6072 - Custom quota per AI agent disabled, 6073 - AI provider created, 6074 - AI provider updated, 6075 - AI provider deleted, 6076 - MCP server created, 6077 - MCP server updated, 6078 - MCP server enabled, 6079 - MCP server disabled, 6080 - MCP server deleted, 6081 - WebSearch settings configured, 6082 - WebSearch settings reset, 6083 - Vectorization settings configured, 6084 - Vectorization settings reset, 6085 - Webplugin uploaded, 6086 - Webplugin updated, 6087 - Webplugin deleted, 6088 - Whitelabel settings logo text updated, 6089 - Whitelabel settings logos updated, 6090 - Whitelabel company settings updated, 6091 - Whitelabel additional settings updated, 6092 - Whitelabel mail settings updated, 6093 - Invitation settings updated, 6094 - IP restrictions settings updated, 6095 - Login settings updated, 6096 - AI default provider set, 6097 - AI access enabled, 6098 - AI access disabled, 6099 - User AI settings updated, 6100 - Subscription balance moved to wallet, 6101 - Docs Cloud config updated, 6102 - Docs Cloud quota report downloaded, 6103 - AI model profile created, 6104 - AI model profile updated, 6105 - AI model profile deleted, 6106 - AI model profile assigned to action, 6107 - AI model profile unassigned from action, 6108 - AI model profile assigned to AI agent action, 6109 - MCP server of AI agent updated, 7000 - Contact admin mail sent, 7001 - Room invite link used, 7002 - User created and added to room, 7003 - Guest created and added to room, 7004 - Contact sales mail sent, 7005 - Suspicious login detected, 9901 - Create client, 9902 - Update client, 9903 - Regenerate secret, 9904 - Delete client, 9905 - Change client activation, 9906 - Change client visibility, 9907 - Revoke user client, 9908 - Generate authorization code token, 9909 - Generate personal access token, -1 - None]
Possible values:
1000(LoginSuccess)1001(LoginSuccessViaSocialAccount)1002(LoginFailInvalidCombination)1003(LoginFailSocialAccountNotFound)1004(LoginFailDisabledProfile)1005(LoginFail)1006(Logout)1007(LoginSuccessViaSms)1008(LoginFailViaSms)1009(LoginFailIpSecurity)1010(LoginSuccessViaApi)1011(LoginSuccessViaSocialApp)1012(LoginSuccessViaApiSms)1013(LoginFailViaApi)1014(LoginFailViaApiSms)1015(LoginSuccessViaSSO)1016(SessionStarted)1017(SessionCompleted)1018(LoginFailViaSSO)1019(LoginSuccessViaApiSocialAccount)1020(LoginFailViaApiSocialAccount)1021(LoginSuccesViaTfaApp)1022(LoginFailViaTfaApp)1023(LoginFailBruteForce)1024(LoginSuccessViaApiTfa)1025(LoginFailViaApiTfa)1026(LoginFailRecaptcha)1027(AuthLinkActivated)1028(LoginSuccessViaOAuth)1029(LoginSuccessViaPassword)4000(UserCreated)4001(GuestCreated)4002(UserCreatedViaInvite)4003(GuestCreatedViaInvite)4004(UserActivated)4005(GuestActivated)4006(UserUpdated)4007(UserUpdatedLanguage)4008(UserAddedAvatar)4009(UserDeletedAvatar)4010(UserUpdatedAvatarThumbnails)4011(UserLinkedSocialAccount)4012(UserUnlinkedSocialAccount)4013(UserSentActivationInstructions)4014(UserSentEmailChangeInstructions)4015(UserSentPasswordChangeInstructions)4016(UserSentDeleteInstructions)4017(UserUpdatedPassword)4018(UserDeleted)4019(UsersUpdatedType)4020(UsersUpdatedStatus)4021(UsersSentActivationInstructions)4022(UsersDeleted)4023(SentInviteInstructions)4024(UserImported)4025(GuestImported)4026(GroupCreated)4027(GroupUpdated)4028(GroupDeleted)4029(UserUpdatedMobileNumber)4030(UserDataReassigns)4031(UserDataRemoving)4032(UserConnectedTfaApp)4033(UserDisconnectedTfaApp)4034(UserLogoutActiveConnections)4035(UserLogoutActiveConnection)4036(UserLogoutActiveConnectionsForUser)4037(SendJoinInvite)5000(FileCreated)5001(FileRenamed)5002(FileUpdated)5003(FileCreatedVersion)5004(FileDeletedVersion)5005(FileUpdatedRevisionComment)5006(FileLocked)5007(FileUnlocked)5008(FileUpdatedAccess)5009(FileDownloaded)5010(FileDownloadedAs)5011(FileUploaded)5012(FileImported)5013(FileCopied)5014(FileCopiedWithOverwriting)5015(FileMoved)5016(FileMovedWithOverwriting)5017(FileMovedToTrash)5018(FileDeleted)5019(FolderCreated)5020(FolderRenamed)5021(FolderUpdatedAccess)5022(FolderCopied)5023(FolderCopiedWithOverwriting)5024(FolderMoved)5025(FolderMovedWithOverwriting)5026(FolderMovedToTrash)5027(FolderDeleted)5028(ThirdPartyCreated)5029(ThirdPartyUpdated)5030(ThirdPartyDeleted)5031(DocumentsThirdPartySettingsUpdated)5032(DocumentsOverwritingSettingsUpdated)5033(DocumentsUploadingFormatsSettingsUpdated)5034(UserFileUpdated)5035(FileConverted)5036(FileSendAccessLink)5037(DocumentServiceLocationSetting)5038(AuthorizationKeysSetting)5039(FullTextSearchSetting)5040(StartTransferSetting)5041(BackupStarted)5042(LicenseKeyUploaded)5043(FileChangeOwner)5044(FileRestoreVersion)5045(DocumentSendToSign)5046(DocumentSignComplete)5047(UserUpdatedEmail)5048(DocumentsStoreForcesave)5049(DocumentsForcesave)5050(StartStorageEncryption)5053(StartStorageDecryption)5054(FileOpenedForChange)5055(FileMarkedAsFavorite)5056(FileRemovedFromFavorite)5057(FolderDownloaded)5058(FileRemovedFromList)5059(FolderRemovedFromList)5060(FileExternalLinkAccessUpdated)5061(TrashEmptied)5062(FileRevisionDownloaded)5063(FileMarkedAsRead)5064(FileReaded)5065(FolderMarkedAsRead)5066(FolderUpdatedAccessFor)5068(FileUpdatedAccessFor)5069(DocumentsExternalShareSettingsUpdated)5070(RoomCreated)5071(RoomRenamed)5072(RoomArchived)5073(RoomUnarchived)5074(RoomDeleted)5075(RoomUpdateAccessForUser)5076(TagCreated)5077(TagsDeleted)5078(AddedRoomTags)5079(DeletedRoomTags)5080(RoomLogoCreated)5081(RoomLogoDeleted)5082(RoomInvitationLinkUpdated)5083(DocumentsKeepNewFileNameSettingsUpdated)5084(RoomRemoveUser)5085(RoomCreateUser)5086(RoomInvitationLinkCreated)5087(RoomInvitationLinkDeleted)5088(RoomExternalLinkCreated)5089(RoomExternalLinkUpdated)5090(RoomExternalLinkDeleted)5091(FileExternalLinkCreated)5092(FileExternalLinkUpdated)5093(FileExternalLinkDeleted)5094(RoomGroupAdded)5095(RoomUpdateAccessForGroup)5096(RoomGroupRemove)5097(RoomExternalLinkRevoked)5098(RoomExternalLinkRenamed)5099(FileUploadedWithOverwriting)5100(RoomCopied)5101(DocumentsDisplayFileExtensionUpdated)5102(RoomColorChanged)5103(RoomCoverChanged)5104(RoomIndexingChanged)5105(RoomDenyDownloadChanged)5106(RoomIndexExportSaved)5107(FolderIndexChanged)5108(FolderIndexReordered)5109(RoomDenyDownloadEnabled)5110(RoomDenyDownloadDisabled)5111(FileIndexChanged)5112(RoomWatermarkSet)5113(RoomWatermarkDisabled)5114(RoomIndexingEnabled)5115(RoomIndexingDisabled)5116(RoomLifeTimeSet)5117(RoomLifeTimeDisabled)5118(RoomInviteResend)5119(FileVersionRemoved)5120(FileCustomFilterEnabled)5121(FileCustomFilterDisabled)5122(FolderExternalLinkCreated)5123(FolderExternalLinkUpdated)5124(FolderExternalLinkDeleted)5125(BackupCompleted)5126(BackupFailed)5127(ScheduledBackupStarted)5128(ScheduledBackupCompleted)5129(ScheduledBackupFailed)5130(ScheduledBackupDeleted)5131(BackupCancelled)5132(RestoreStarted)5133(RestoreCancelled)5150(FormStartedToFill)5151(FormPartiallyFilled)5152(FormCompletelyFilled)5153(FormStopped)5154(AgentCreated)5155(AgentRenamed)5156(AgentDeleted)5157(AddedServerToAgent)5158(DeletedServerFromAgent)5159(RoomChangeOwner)5160(DocumentsDefaultTemplatesSettingsUpdated)5161(PrivacyRoomKeyCreated)5162(PrivacyRoomKeyUpdated)5163(PrivacyRoomKeyDeleted)5201(FileSavedButUserQuotaExceeded)5202(FileNotSavedDueToUserQuota)5203(FileSavedButRoomQuotaExceeded)5204(FileNotSavedDueToRoomQuota)5205(FileSavedButTenantQuotaExceeded)5206(FileNotSavedDueToTenantQuota)5207(DocumentsShowQuickActionsUpdated)5501(LdapEnabled)5502(LdapDisabled)5503(LdapSync)6000(LanguageSettingsUpdated)6001(TimeZoneSettingsUpdated)6002(DnsSettingsUpdated)6003(TrustedMailDomainSettingsUpdated)6004(PasswordStrengthSettingsUpdated)6005(TwoFactorAuthenticationSettingsUpdated)6006(AdministratorMessageSettingsUpdated)6007(DefaultStartPageSettingsUpdated)6008(ProductsListUpdated)6009(AdministratorAdded)6010(AdministratorOpenedFullAccess)6011(AdministratorDeleted)6012(UsersOpenedProductAccess)6013(GroupsOpenedProductAccess)6014(ProductAccessOpened)6015(ProductAccessRestricted)6016(ProductAddedAdministrator)6017(ProductDeletedAdministrator)6018(GreetingSettingsUpdated)6019(TeamTemplateChanged)6020(ColorThemeChanged)6021(OwnerSentChangeOwnerInstructions)6022(OwnerUpdated)6023(OwnerSentPortalDeactivationInstructions)6024(OwnerSentPortalDeleteInstructions)6025(PortalDeactivated)6026(PortalDeleted)6027(LoginHistoryReportDownloaded)6028(AuditTrailReportDownloaded)6029(SSOEnabled)6030(SSODisabled)6031(PortalAccessSettingsUpdated)6032(CookieSettingsUpdated)6033(MailServiceSettingsUpdated)6034(CustomNavigationSettingsUpdated)6035(AuditSettingsUpdated)6036(TwoFactorAuthenticationDisabled)6037(TwoFactorAuthenticationEnabledBySms)6038(TwoFactorAuthenticationEnabledByTfaApp)6039(PortalRenamed)6040(QuotaPerRoomChanged)6041(QuotaPerRoomDisabled)6042(QuotaPerUserChanged)6043(QuotaPerUserDisabled)6044(QuotaPerPortalChanged)6045(QuotaPerPortalDisabled)6046(FormSubmit)6047(FormOpenedForFilling)6048(CustomQuotaPerRoomDefault)6049(CustomQuotaPerRoomChanged)6050(CustomQuotaPerRoomDisabled)6051(CustomQuotaPerUserDefault)6052(CustomQuotaPerUserChanged)6053(CustomQuotaPerUserDisabled)6054(DevToolsAccessSettingsChanged)6055(WebhookCreated)6056(WebhookUpdated)6057(WebhookDeleted)6058(ApiKeyCreated)6059(ApiKeyUpdated)6060(ApiKeyDeleted)6061(CustomerWalletToppedUp)6062(CustomerOperationPerformed)6063(CustomerOperationsReportDownloaded)6064(CustomerWalletTopUpSettingsUpdated)6065(CustomerSubscriptionUpdated)6066(BannerSettingsChanged)6067(CustomerWalletServicesSettingsUpdated)6068(QuotaPerAiAgentChanged)6069(QuotaPerAiAgentDisabled)6070(CustomQuotaPerAiAgentDefault)6071(CustomQuotaPerAiAgentChanged)6072(CustomQuotaPerAiAgentDisabled)6073(AIProviderCreated)6074(AIProviderUpdated)6075(AIProviderDeleted)6076(ServerCreated)6077(ServerUpdated)6078(ServerEnabled)6079(ServerDisabled)6080(ServerDeleted)6081(SetWebSearchSettings)6082(ResetWebSearchSettings)6083(SetVectorizationSettings)6084(ResetVectorizationSettings)6085(WebpluginUploaded)6086(WebpluginUpdated)6087(WebpluginDeleted)6088(WhiteLabelSettingsLogoTextUpdated)6089(WhiteLabelSettingsLogosUpdated)6090(WhiteLabelCompanySettingsUpdated)6091(WhiteLabelAdditionalSettingsUpdated)6092(WhiteLabelMailSettingsUpdated)6093(InvitationSettingsUpdated)6094(IPRestrictionsSettingsUpdated)6095(LoginSettingsUpdated)6096(AIDefaultProviderSet)6097(AIAccessEnabled)6098(AIAccessDisabled)6099(UserUpdatedAiSettings)6100(SubscriptionBalanceMovedToWallet)6101(DocsCloudConfigUpdated)6102(DocsCloudQuotaReportDownloaded)6103(AiProfileCreated)6104(AiProfileUpdated)6105(AiProfileDeleted)6106(AiProfileAssigned)6107(AiProfileUnassigned)6108(AiAgentProfileAssigned)6109(UpdatedServerOfAgent)7000(ContactAdminMailSent)7001(RoomInviteLinkUsed)7002(UserCreatedAndAddedToRoom)7003(GuestCreatedAndAddedToRoom)7004(ContactSalesMailSent)7005(SuspiciousLoginDetected)9901(CreateClient)9902(UpdateClient)9903(RegenerateSecret)9904(DeleteClient)9905(ChangeClientActivation)9906(ChangeClientVisibility)9907(RevokeUserClient)9908(GenerateAuthorizationCodeToken)9909(GeneratePersonalAccessToken)-1(None)
Model MobilePhoneActivationStatus
Possible values:
0— Not activated (NotActivated)1— Activated (Activated)
Model Module
The descriptor of a portal module: what it is called, where it starts and how it is pictured.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | The identifier of the module. It is the same in every portal and in every language, so use it rather than the title to tell modules apart. | [optional] [example: e67be73d-f9ae-4ce1-8fec-1880cb518cb4] |
| appName | String | The short system name of the module, the one that appears in its addresses and in the portal configuration. Unlike the title it is not translated. | [optional] [example: files] [nullable] |
| title | String | The display name of the module, already translated for the calling account, so it changes with the language and must not be compared against a fixed string. | [optional] [example: Documents] [nullable] |
| link | String | The address of the start page of the module, to be opened in a browser rather than called as an API. | [optional] [example: https://example.com] [nullable] |
| iconUrl | String | The address of the small icon of the module, meant for a menu entry. | [optional] [example: https://example.com/icon.svg] [nullable] |
| imageUrl | String | The address of the large image of the module, meant for a tile or a start screen. | [optional] [example: https://example.com/image.png] [nullable] |
| helpUrl | String | The address of the help section of the module. It is empty when the portal publishes no help for it. | [optional] [example: https://example.com/help] [nullable] |
| description | String | The one-line description of the module shown next to its title, translated for the calling account. | [optional] [example: File management] [nullable] |
| isPrimary | Boolean | Whether the portal opens this module first when no other destination is given. | [optional] [example: true] |
Model ModuleWrapper
The successful API response containing the Module object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | Module | The Module object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model MultiSizeLogoCover
The logo cover information, with the cover data in every available size.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The logo cover ID. | [required] [example: default_cover] [nullable] |
| data | Map | The logo cover data. | [required] [example: {small=base64..., medium=base64..., large=base64...}] |
Model NewItemsDtoFileEntryBaseDto
One day of the entries the caller has not opened yet, the groups running from the most recent day backwards.
| Name | Type | Description | Notes |
|---|---|---|---|
| date | ApiDateTime | The day the grouped entries were last changed, written with the offset of the portal time zone. The time part is the moment of the newest entry of the group. | [required] |
| items | List | What changed on that day, the most recent first. Folders are left out of it, so an entry here is always a file or a room that holds them. | [required] [nullable] |
Model NewItemsDtoRoomNewItemsDto
One day of the entries the caller has not opened yet, the groups running from the most recent day backwards.
| Name | Type | Description | Notes |
|---|---|---|---|
| date | ApiDateTime | The day the grouped entries were last changed, written with the offset of the portal time zone. The time part is the moment of the newest entry of the group. | [required] |
| items | List | What changed on that day, the most recent first. Folders are left out of it, so an entry here is always a file or a room that holds them. | [required] [nullable] |
Model NewItemsFileEntryBaseArrayWrapper
The successful API response containing the list of NewItemsDtoFileEntryBaseDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of NewItemsDtoFileEntryBaseDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model NewItemsRoomNewItemsArrayWrapper
The successful API response containing the list of NewItemsDtoRoomNewItemsDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of NewItemsDtoRoomNewItemsDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model OAuth20Token
The OAuth 2.0 token issued by a third-party provider.
| Name | Type | Description | Notes |
|---|---|---|---|
| access_token | String | The token sent to the provider with every request made on behalf of the account. | [optional] [example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...] [nullable] |
| refresh_token | String | The token used to obtain a new access token when the current one expires. A provider that issues no refresh token leaves it empty, and the account then has to be connected again to keep working. | [optional] [example: def50200a1b2c3d4e5f6...] [nullable] |
| expires_in | Long (int64) | How long the access token stays usable, in seconds counted from timestamp. Zero means the provider did not say, and the token is then treated as expired. | [optional] [example: 3600] |
| client_id | String | The OAuth 2.0 client ID of the application the token was issued to. | [optional] [example: my-client-id] [nullable] |
| client_secret | String | The client secret of the application the token was issued to, needed when the token is refreshed. | [optional] [example: my-client-secret] [nullable] |
| redirect_uri | URI (uri) | The redirect URL the authorization code behind this token was obtained with; providers require the same value again when the token is refreshed. | [optional] [example: https://app.example.com/callback] [nullable] |
| timestamp | Date (date-time) | When the token was issued, in UTC. This is the point expires_in is counted from. | [optional] [example: 2026-01-01T00:00:00Z] |
| isExpired | Boolean | Whether the access token can no longer be used and has to be refreshed. It is also true when the provider did not say how long the token lives. | [optional] [example: false] |
Model ObjectArrayWrapper
The successful API response.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The response payload. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model Options
The document options.
| Name | Type | Description | Notes |
|---|---|---|---|
| watermark_on_draw | WatermarkOnDraw | The document watermark parameters. | [optional] |
Model OrderBy
The sorting parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| is_asc | Boolean | Specifies if the order is ascending. | [optional] [example: true] |
| property | SortedByType | The parameters by which the files will be sorted. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] |
Model OrderRequestDto
The position an entry is to take inside its folder.
| Name | Type | Description | Notes |
|---|---|---|---|
| order | Integer (int32) | The position the entry is to take, counting from 1. The entry that held it, and everything after it, is shifted to make room. A dotted path such as 1.2.3 is accepted as well, of which only the last segment is read. | [optional] [example: 1] [min: 1] [max: 2147483647] |
Model OrdersItemRequestDtoInteger
One entry to move to a given position inside its folder.
| Name | Type | Description | Notes |
|---|---|---|---|
| entryId | Integer (int32) | The file or folder to move. | [required] [example: 1] |
| entryType | FileEntryType | Which of the two the identifier names, because a file and a folder may carry the same number. | [required] [enum: 1, 2] |
| order | Integer (int32) | The position the entry is to take, counting from 1. The entry that held it, and everything after it, is shifted to make room. A dotted path such as 1.2.3 is accepted as well, of which only the last segment is read. | [required] [example: 1] [min: 1] [max: 2147483647] |
Model OrdersRequestDtoInteger
The request that moves several files and folders to given positions.
| Name | Type | Description | Notes |
|---|---|---|---|
| items | List | The entries to move, applied one after another in the order they are sent, so each of them shifts the neighbours the ones before it left behind. | [required] [example: [{entryId=1, entryType=2, order=1}, {entryId=4, entryType=1, order=2}]] [nullable] |
Model Paragraph
The paragraph parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| align | Integer (int32) | The paragraph align. | [optional] [example: 2] |
| runs | List | The list of text runs from the paragraph. | [optional] [example: [{fill=[124, 124, 124], text=CONFIDENTIAL, fontSize=26}]] [nullable] |
Model PermissionsConfig
The permissions configuration parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| comment | Boolean | Defines if the document can be commented or not. | [optional] [example: true] |
| chat | Boolean | Defines if the chat functionality is enabled in the document or not. | [optional] [example: true] |
| download | Boolean | Defines if the document can be downloaded or only viewed or edited online. | [optional] [example: true] |
| edit | Boolean | Defines if the document can be edited or only viewed. | [optional] [example: true] |
| fillForms | Boolean | Defines if the forms can be filled. | [optional] [example: true] |
| modifyFilter | Boolean | Defines if the filter can be applied globally (true) affecting all the other users, or locally (false), i.e. for the current user only. | [optional] [example: true] |
| protect | Boolean | Defines if the Protection tab on the toolbar and the Protect button in the left menu are displayedor hidden. | [optional] [example: true] |
| Boolean | Defines if the document can be printed or not. | [optional] [example: true] | |
| review | Boolean | Defines if the document can be reviewed or not. | [optional] [example: true] |
| copy | Boolean | Defines if the content can be copied to the clipboard or not. | [optional] [example: true] |
Model PluginsConfig
Which editor add-ons the portal connects. It currently connects none.
| Name | Type | Description | Notes |
|---|---|---|---|
| pluginsData | List | The array of absolute URLs to the plugin configuration files. | [optional] [example: [https://portal.example.com/ThirdParty/plugin/easybib/config.json, https://portal.example.com/ThirdParty/plugin/wordpress/config.json]] [nullable] |
Model ProblemDetail
RFC 7807 problem details returned by the registration API for failed requests.
| Name | Type | Description | Notes |
|---|---|---|---|
| type | URI (uri) | A URI reference that identifies the problem type. This service sets it to the DocSpace API getting-started page. | [optional] |
| title | String | A short, human-readable summary of the problem type, typically the HTTP status reason phrase. | [optional] |
| status | Integer (int32) | The HTTP status code for this occurrence of the problem. | [optional] |
| detail | String | A human-readable explanation specific to this occurrence of the problem. | [optional] |
| instance | URI (uri) | A URI reference that identifies the specific occurrence, set to the request path. | [optional] |
| properties | Map | Extension members carried on the problem. Usually empty; validation failures also surface as the top-level errors array. | [optional] |
| errors | List | Field-specific validation errors. Present when the request body or parameters failed validation, or when a named scope is not in the tenant catalogue. | [optional] |
Model ProviderArrayWrapper
The successful API response containing the list of ProviderDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of ProviderDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model ProviderDto
One storage service this portal can connect, with the values a connection form needs.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The display name of the service, and the only thing that tells the WebDAV presets apart: kDrive, Yandex, WebDav, Nextcloud and ownCloud all report the same key. | [optional] [example: Nextcloud] [nullable] |
| key | String | The value to send as providerKey when an account of this service is connected. | [optional] [example: WebDav] [nullable] |
| connected | Boolean | Whether the service can be used on this portal: it is enabled in the configuration and, for an OAuth service, its application is registered. It says nothing about whether an account of it is connected. | [optional] [example: true] |
| oauth | Boolean | Whether an account of this service is connected with an OAuth 2.0 authorization code in token; when false, it is connected with login and password. | [optional] [example: true] |
| redirectUrl | String | The redirect URL this portal is registered with at the service, to build the consent screen URL from. It comes back as null for the services that do not use OAuth. | [optional] [example: https://example.com/thirdparty] [nullable] |
| requiredConnectionUrl | Boolean | Whether an account of this service cannot be connected without url, which is the case for the WebDAV servers whose address is not known in advance. The presets with a fixed address and the OAuth services do not need it. | [optional] [example: false] |
| clientId | String | The OAuth 2.0 client ID this portal is registered with at the service, to build the consent screen URL from. It comes back as null for the services that do not use OAuth. | [optional] [example: l1s2h3d4f5g6h7j8k9l0] [nullable] |
Model ProviderFilter
Possible values:
0— None (None)1— Box (Box)2— DropBox (DropBox)3— GoogleDrive (GoogleDrive)4— kDrive (kDrive)5— OneDrive (OneDrive)6— SharePoint (SharePoint)7— WebDav (WebDav)8— Yandex (Yandex)9— Storage (Storage)
Model QuotaFilter
Possible values:
0— All (All)1— Default (Default)2— Custom (Custom)
Model QuotaScope
Possible values:
0— User (User)1— Room (Room)2— Tenant (Tenant)
Model RecentConfig
One entry of the recent-documents list the editor offers.
| Name | Type | Description | Notes |
|---|---|---|---|
| folder | String | The folder shown next to the entry, as a readable name rather than an id. | [optional] [example: My documents] [nullable] |
| title | String | The name shown for the entry. | [optional] [example: Report 2026.docx] [nullable] |
| url | URI (uri) | Where the entry opens. | [optional] [example: https://portal.example.com/doceditor?fileid=512] [nullable] |
Model ReviewConfig
How tracked changes are displayed when the document opens.
| Name | Type | Description | Notes |
|---|---|---|---|
| reviewDisplay | String | How the editors render tracked changes at first: with the markup, in a simplified markup, as the final text, or as the original text. A session that may not write opens on the final text. | [optional] [example: original] [nullable] |
Model RoomDataLifetimeDto
The rule by which the files of a room are removed once they have been lying in it for too long.
| Name | Type | Description | Notes |
|---|---|---|---|
| deletePermanently | Boolean | Decides what happens to a file that has grown too old: it is erased outright, or it is moved to the trash of the account that created the room, from where it can still be brought back. | [optional] [example: false] |
| period | RoomDataLifetimePeriod | The unit the age is counted in. Months and years are counted as calendar ones, so the same number of them covers a different number of days depending on when the clean-up runs. | [optional] [enum: 0, 1, 2] |
| value | Integer (int32) | How many periods a file may stay in the room, counted from the moment it was last changed rather than from the moment the rule was set. Files that are already older than this are removed by the next clean-up. | [optional] [example: 12] [min: 1] [max: 999] [nullable] |
| enabled | Boolean | Switches the rule on and off. Switching it off erases the rule instead of keeping it aside, so afterwards the room reports no rule at all and the other three values have to be sent again to bring it back. | [optional] [example: true] [nullable] |
Model RoomDataLifetimePeriod
Possible values:
0— Day (Day)1— Month (Month)2— Year (Year)
Model RoomFromTemplateStatusDto
The progress of the job that creates a room out of a room template.
| Name | Type | Description | Notes |
|---|---|---|---|
| roomId | Integer (int32) | The room the job is creating. It is meaningful once the room exists, which is guaranteed only after isCompleted turns true and error stays empty; until then it carries no usable id. | [required] [example: 456] |
| progress | Double (double) | How far the job has got. The value climbs while the contents of the template are being copied into the new room and reaches its maximum at the very end. | [required] [example: 50.0] |
| error | String | Why the job stopped. It is empty while the job runs and after a successful one, and a filled value means that no room was created, so the request has to be repeated rather than waited out. | [required] [example: Room creation failed] [nullable] |
| isCompleted | Boolean | Whether the job has ended. It is set both after a successful creation and after a failure, so it is the flag to poll for, while error is what separates the two outcomes. | [required] [example: false] |
Model RoomFromTemplateStatusWrapper
The successful API response containing the RoomFromTemplateStatusDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | RoomFromTemplateStatusDto | The RoomFromTemplateStatusDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model RoomGroupArrayWrapper
The successful API response containing the list of RoomGroupDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of RoomGroupDto objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model RoomGroupDto
A personal collection of rooms: the name and icon it was given, the account that owns it, and the rooms it gathers at the moment it was read.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The identifier of the group, which addresses it in every other group operation and is kept for as long as the group exists. | [optional] [example: 42] |
| name | String | The name its owner gave the group, stored trimmed of surrounding spaces. Names are not unique, so two groups of the same account can be told apart only by their identifier. | [optional] [example: Client projects] [nullable] |
| icon | MultiSizeLogoCover | The built-in cover chosen for the group, carrying the cover identifier and its rendering in each available size. Null when the group has no icon, either because it was never given one or because the icon was cleared by setting it to an empty value. | [optional] |
| userId | UUID (uuid) | The account that created the group and the only one able to read, change or delete it; for any other member of the portal the group does not exist. | [optional] [example: 9a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9] |
| rooms | List | The rooms the group gathers, those stored in the portal first and those on connected third-party accounts after them. Null when the group was asked for without its members, and an empty array when the group holds no room the caller can still see. A room moved to the archive is left out until it is taken out of the archive. | [optional] [example: [{title=Client onboarding, fileEntryType=1}]] [nullable] |
| totalRooms | Integer (int32) | How many rooms the group shows: the same rooms rooms lists, so archived ones are not counted either. It is filled even when the rooms themselves were not asked for, which makes it the cheap way to tell an empty group from a populated one. | [optional] [example: 2] |
Model RoomGroupRequestDto
The name, the icon and the rooms of a room group to create.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The name to show the group under. Surrounding spaces are trimmed before it is stored, a name that is blank once trimmed is refused, and the name does not have to differ from the names of the caller's other groups. | [required] [example: Client projects] [minLength: 0] [maxLength: 128] |
| icon | String | The icon of the group, given as the identifier of one of the built-in covers listed by GET api/2.0/files/rooms/covers. An uploaded image cannot be used, and any value that is not one of those identifiers is refused. | [required] [example: star] [minLength: 0] [maxLength: 50] |
| rooms | List | The rooms to gather in the group, each given as a number for a room stored in the portal or as a string for a room on a connected third-party account. Every identifier has to name a room the caller can read; repeats are collapsed, and an element of any other shape - a decimal number, a number sent as a string, null - is refused. | [required] [example: [12, 15, folder-123-abc]] |
Model RoomGroupWrapper
The successful API response containing the RoomGroupDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | RoomGroupDto | The RoomGroupDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model RoomInvitation
One membership change in a room: an account or an email address, and the access level it is given.
| Name | Type | Description | Notes |
|---|---|---|---|
| String (email) | The address of somebody who has no portal account yet. An invitation is sent to it and an account is created once it is accepted, so this is the field to use instead of an account identifier when the person is new to the portal. | [optional] [maxLength: 255] | |
| id | UUID (uuid) | The account or the group the entry is about, taken from the portal people and group listings. Leave it out and give an email address instead to invite somebody who has no account yet. | [optional] |
| access | FileShare | What the subject may do in the room. The value 0 removes the subject from the room, and the levels on offer depend on the kind of room. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
Model RoomInvitationRequest
One batch of membership changes for a room.
| Name | Type | Description | Notes |
|---|---|---|---|
| invitations | List | Who is added, changed or removed, one entry per subject. The same subject named twice keeps the level of the last entry, and an empty list is accepted and changes nothing. | [optional] [example: [{id=e9a7b4c1-2d3f-4a56-8b90-1c2d3e4f5a6b, access=10}]] [nullable] |
| notify | Boolean | Whether the subjects that gained access are told about it by email. With it off the change is silent, which is the usual choice when membership is synchronised from another system. | [optional] [example: true] |
| message | String | The line added to the invitation email. It is used only while the notification is on, and it reaches nobody whose access was removed. | [optional] [example: Please review the contract by Friday] [nullable] |
| culture | String | The language of the invitation email, as a portal culture name such as en-US. Leaving it out sends each message in the language of its recipient. | [optional] [example: en-US] [nullable] |
| force | Boolean | Whether a member who still holds a role in an unfinished form is removed anyway. With it off such a removal is refused and reported through the error of the answer, so the form can be reassigned first. | [optional] [example: false] |
Model RoomLinkRequest
The link of a room to create, change or revoke.
| Name | Type | Description | Notes |
|---|---|---|---|
| linkId | UUID (uuid) | Which link to change, taken from GET api/2.0/files/rooms/{id}/links. Leaving it out creates a link, and an identifier the room does not know creates a link carrying that identifier. | [optional] [example: b3f1c8de-5a64-4d1e-9f27-6c0a8d5b7e41] |
| access | FileShare | What whoever opens the link may do in the room. The value 0 revokes the link instead of changing it, and the levels a room accepts depend on its kind. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
| expirationDate | ApiDateTime | When the link stops working, written with the offset of the portal time zone. A date already past is dropped silently for an external link and refused for an invitation link, and a date further ahead than the portal allows is refused as well; leaving it out means the link does not expire. | [optional] |
| internal | Boolean | Whether the external link works only for people already signed in to the portal. With it off the link opens the room for anyone who has the address, subject to the password. | [optional] [example: false] |
| title | String | The name the link is shown under in the room. An empty value is accepted and the portal names the link itself, so the answer is what tells the caller the name in use. | [optional] [example: Read-only access for auditors] [minLength: 0] [maxLength: 255] [nullable] |
| linkType | LinkType | Which kind of link to create: an invitation link makes whoever opens it a member of the room, while an external link opens the room without an account. It is fixed when the link is created and is ignored on later changes. | [optional] [enum: 0, 1] |
| password | String | The password an external link asks for before it opens the room. An empty value leaves the link open to anyone who has the address, and the password is never returned when links are listed. | [optional] [example: S3cret-Phrase] [minLength: 0] [maxLength: 255] [nullable] |
| denyDownload | Boolean | Whether people arriving through the link are stopped from downloading and printing what they open. They can still read the documents in the editor. | [optional] [example: false] |
| maxUseCount | Integer (int32) | How many people an invitation link may still let in before it stops working. A value below the number of people who already used it is refused, and leaving it out puts no ceiling on the link. | [optional] [example: 25] [min: 1] [max: 1000] [nullable] |
| currentUseCount | Integer (int32) | How many people have already joined through this invitation link. The value is kept by the portal: it is reported back when links are listed and anything sent here is ignored. | [optional] [example: 0] |
Model RoomNewItemsDto
The unseen entries of one room inside a day group.
| Name | Type | Description | Notes |
|---|---|---|---|
| room | FileEntryBaseDto | The room the entries were found in, in its short form: only the identifier, the title, the room type and the logo are filled in. | [optional] |
| items | List | The files of that room the caller has not opened yet, the most recently changed first. Reading them here does not clear the badges; opening the room itself does. | [optional] [nullable] |
Model RoomPrivacyFilter
Possible values:
0— None (None)1— Private (Private)2— NotPrivate (NotPrivate)
Model RoomSecurityDto
The outcome of a change of the room membership.
| Name | Type | Description | Notes |
|---|---|---|---|
| members | List | The access entries of the subjects named in the request, read back after the change was applied. A subject the caller may not see is missing from it, so comparing this list with the request is the way to learn who was skipped; it is null when nothing was applied at all. | [optional] [example: [{access=10, isOwner=false, subjectType=0}]] [nullable] |
| warning | String | The reason the first subject that could not be handled was skipped, in the language of the request, while the rest of the list was still applied. Null when every named subject went through. The text is meant to be shown to a person, not matched against. | [optional] [example: The maximum number of links is 10] [nullable] |
| error | RoomSecurityError | Reports the one case in which nothing at all was changed: a member being removed still holds a role in a form of the room, and the request did not ask to remove them anyway. Repeat the call with force to remove them together with the role. | [optional] [enum: 0, 1] |
Model RoomSecurityError
Possible values:
0— None (None)1— Form role blocking deletion (FormRoleBlockingDeletion)
Model RoomSecurityWrapper
The successful API response containing the RoomSecurityDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | RoomSecurityDto | The RoomSecurityDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model RoomTemplateDto
The parameters of a room template built from an existing room.
| Name | Type | Description | Notes |
|---|---|---|---|
| roomId | Integer (int32) | The identifier of the room the template is built from. Take it from the room listing of GET api/2.0/files/rooms; a folder identifier is not accepted. | [required] [example: 1234] |
| title | String | The title the template is saved under in the Templates section. Characters that a folder name cannot contain are replaced with an underscore on save, and two templates may share a title. | [required] [example: Sales agreement room] [minLength: 0] [maxLength: 400] |
| logo | LogoRequest | A picture of the caller's own for the template, cropped out of an image already placed in the temporary storage. | [optional] |
| copyLogo | Boolean | Whether the template takes over the picture already set on the source room. When false the template gets no picture from that room. | [optional] [example: true] |
| share | List | The email addresses of the portal members who are granted read access to the finished template. | [optional] [example: [user1@example.com, user2@example.com]] [nullable] |
| groups | List (uuid) | The identifiers of the portal groups whose members are granted read access to the finished template. | [optional] [example: [9924256a-739c-462b-af15-e652a3b1b6eb]] [nullable] |
| public | Boolean | Whether the finished template is shared with everyone allowed to create rooms. When false it stays reachable only for the recipients named for it. | [optional] [example: true] |
| tags | List | The labels attached to the template and shown next to it in listings. | [optional] [example: [Contracts, Sales]] [nullable] |
| color | String | The accent colour of the generated cover, written as six hexadecimal digits with no leading hash sign. When it is left empty a colour is picked at random. | [optional] [example: FF5733] [minLength: 0] [maxLength: 6] [nullable] |
| cover | String | The identifier of a built-in cover picture, as listed by GET api/2.0/files/rooms/covers. When it is left empty the template gets no cover. | [optional] [example: bookmark] [minLength: 0] [maxLength: 50] [nullable] |
| quota | Long (int64) | The storage limit assigned to the template, in bytes. When it is not set the template keeps the limit of the source room. | [optional] [example: 10485760] [nullable] |
Model RoomTemplateStatusDto
The progress of the job that builds a room template out of an existing room.
| Name | Type | Description | Notes |
|---|---|---|---|
| templateId | Integer (int32) | The template the job is building. It is meaningful once the job has created the template folder, and the template can be opened with the room operations only after isCompleted turns true. | [required] [example: 123] |
| progress | Double (double) | How far the job has got. The value climbs while the contents of the room are being copied and reaches its maximum at the very end, so it is an indication of life rather than a reliable estimate of the time left. | [required] [example: 75.5] |
| error | String | Why the job stopped. It is empty while the job runs and after a successful one; when it is filled the half-built template has already been removed, so nothing has to be cleaned up by the caller. | [optional] [example: Template creation failed] [nullable] |
| isCompleted | Boolean | Whether the job has ended. It is set both after a successful build and after a failure, so error is what tells the two apart, and the record keeps answering with the same values until another job is started. | [required] [example: false] |
Model RoomTemplateStatusWrapper
The successful API response containing the RoomTemplateStatusDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | RoomTemplateStatusDto | The RoomTemplateStatusDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model RoomType
Possible values:
1— Form filling room (FillingFormsRoom)2— Collaboration room (EditingRoom)5— Custom room (CustomRoom)6— Public room (PublicRoom)8— Virtual data room (VirtualDataRoom)9— AI Room (AiRoom)
Model Run
The text run parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| fill | List (int32) | The fill color of the text run in RGB format. | [optional] [example: [124, 124, 124]] [nullable] |
| text | String | The run text. | [optional] [example: CONFIDENTIAL] [nullable] |
| font-size | String | The font size of the text run in points. | [optional] [example: 26] [nullable] |
Model STRINGArrayWrapper
The successful API response.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The response payload. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model SaveAsPdfInteger
The place and the name the PDF copy of a file is stored under.
| Name | Type | Description | Notes |
|---|---|---|---|
| folderId | Integer (int32) | The folder the PDF is created in; the caller has to be allowed to create files there. | [required] [example: 1] |
| title | String | The name of the PDF, without an extension - .pdf is appended. Left empty, the name of the source file is reused with its extension replaced. | [required] [example: My Document] [nullable] |
Model SaveFormRoleMappingDtoInteger
The people who are to fill in the roles of a PDF form.
| Name | Type | Description | Notes |
|---|---|---|---|
| formId | Integer (int32) | The PDF form the roles belong to. This is the value the operation reads, rather than the identifier in its route, and the two are to be sent the same. | [required] [example: 1] |
| roles | List | The roles with the account taking each of them and the sequence number that decides the turn: the same number means the roles may be filled in parallel, different ones make a queue. The whole set is replaced on every call, and an empty set resets the filling. | [required] [example: [{roleName=Approver, userId=00000000-0000-0000-0000-000000000000}]] [nullable] |
Model SearchArea
Possible values:
0— Active (Active)1— Archive (Archive)2— Any (Any)3— Recent by links (RecentByLinks)4— Template (Templates)5— Knowledge (Knowledge)6— Result storage (ResultStorage)7— AiAgents (AiAgents)8— Forms (Forms)9— Form templates (FormTemplates)
Model SecurityInfoRequestDto
The entries whose sharing rights are being changed, and the rights to apply to them.
| Name | Type | Description | Notes |
|---|---|---|---|
| folderIds | List | The folders and rooms whose rights are being changed, identified as a listing operation returns them - a number on the portal, a string on a connected third-party account. | [optional] [example: [1, 2, 3]] [nullable] |
| fileIds | List | The files whose rights are being changed, identified as a listing operation returns them - a number on the portal, a string on a connected third-party account. | [optional] [example: [7, 8]] [nullable] |
| share | List | One record per account or group whose rights are being set, each naming the subject and the level it gets on all of the listed entries; a level of None takes the access away. An empty collection makes the call change nothing. | [optional] [example: [{access=2, shareTo=9924256a-739c-462b-af15-e652a3b1b6eb}]] [nullable] |
| notify | Boolean | Set to true to have every account named in share emailed about the access it just received; false changes the rights without telling anyone. | [optional] [example: true] |
| sharingMessage | String | The text put into that email, ignored while notify is false. Markup is stripped before sending, so only the plain text of the value survives. | [optional] [example: You have been granted access to the file] [minLength: 0] [maxLength: 255] [nullable] |
Model SecurityInfoSimpleRequestDto
The rights to apply to a single file or folder, and how to announce them.
| Name | Type | Description | Notes |
|---|---|---|---|
| share | List | One record per account or group whose rights are being set, each naming the subject and the level it gets; a level of None takes the access away. An empty collection makes the call change nothing. | [optional] [example: [{access=2, shareTo=9924256a-739c-462b-af15-e652a3b1b6eb}]] [nullable] |
| notify | Boolean | Set to true to have every account named in share emailed about the access it just received; false changes the rights without telling anyone. | [optional] [example: true] |
| sharingMessage | String | The text put into that email, ignored while notify is false. Markup is stripped before sending, so only the plain text of the value survives. | [optional] [example: You have been granted access to the file] [minLength: 0] [maxLength: 255] [nullable] |
Model SessionRequest
The file a chunked upload session is opened for, and how a clash with an existing name is settled.
| Name | Type | Description | Notes |
|---|---|---|---|
| fileName | String | The name to store the file under, extension included. Characters a title cannot hold are replaced and the name is truncated, so the stored title can differ from the one sent. | [required] [example: My Document.docx] [nullable] |
| fileSize | Long (int64) | The exact number of bytes that will be sent. The size is reserved when the session opens and compared with the parts as they arrive; below the portal chunk size the session takes the whole payload in one part, and above the portal limit for chunked uploads it is refused. | [optional] [example: 10485760] |
| relativePath | String | A slash-separated chain of folder titles under the target folder to store the file in; folders in the chain that do not exist yet are created. Leave it empty to store the file in the folder from the path itself. | [optional] [example: subfolder/documents] [nullable] |
| createOn | ApiDateTime | The creation time to stamp on a newly created file instead of the moment the upload finishes. It is ignored when the upload lands on a file that already exists. | [optional] |
| encrypted | Boolean | Marks the stored file as client-side encrypted, which is how content uploaded into a private room is kept; with false the bytes are stored as they arrive. | [optional] [example: false] |
| createNewIfExist | Boolean | Settles the clash when the folder already holds a file with this name: true stores the upload beside it under a name with a numeric suffix, false takes the existing file over and adds the content to it as a new version. | [optional] [example: true] |
Model SetPublicDto
The public access to set on a room template.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The identifier of the room template. Take it from templateId of GET api/2.0/files/roomtemplate/status, or from the folder list of GET api/2.0/files/rooms called with searchArea set to 4; an identifier of an ordinary room is not accepted. | [required] [example: 1234] [min: 1] [max: 2147483647] |
| public | Boolean | Whether the Everyone group keeps read access to the template. True shares it with every member allowed to create rooms; false leaves it reachable only for its owner. | [optional] [example: true] |
Model SettingsRequestDto
The body of a file settings switch: a single flag carrying the state to store.
| Name | Type | Description | Notes |
|---|---|---|---|
| set | Boolean | The state to store for the setting the operation addresses: true switches it on, false switches it off. The flag carries no meaning of its own - what is switched, who is allowed to switch it, and whether the value belongs to the calling account or to the whole portal are stated by the operation that binds this body. The answer repeats the value the portal read back afterwards, which is not always the one that was sent. | [optional] [example: true] |
Model ShareFilterType
[0 - User or group, 1 - Invitation link, 2 - External link, 4 - Additional external link, 8 - Primary external link, 16 - User, 32 - Group]
Possible values:
0(UserOrGroup)1(InvitationLink)2(ExternalLink)4(AdditionalExternalLink)8(PrimaryExternalLink)15(Link)16(User)32(Group)
Model Size
A pixel size measured on the image itself.
| Name | Type | Description | Notes |
|---|---|---|---|
| height | Integer (int32) | The height of the image in pixels, read from the stored file rather than from any display setting. | [optional] [example: 1080] |
| width | Integer (int32) | The width of the image in pixels, read from the stored file rather than from any display setting. | [optional] [example: 1920] |
Model SortOrder
Possible values:
0— Ascending (Ascending)1— Descending (Descending)
Model SortedByType
Possible values:
0— Date and time (DateAndTime)1— AZ (AZ)2— Size (Size)3— Author (Author)4— Type (Type)5— New (New)6— Date and time creation (DateAndTimeCreation)7— Room type (RoomType)8— Tags (Tags)9— Room (Room)10— Custom order (CustomOrder)11— Last opened (LastOpened)12— Used space (UsedSpace)
Model StartEdit
The body of an editing session request.
| Name | Type | Description | Notes |
|---|---|---|---|
| editingAlone | Boolean | Claims the file for this caller alone: the session is opened without asking the document service to track co-editing, and the call is refused when anybody else already has the file open. Left off, an ordinary co-editing session is opened and others may join it. | [optional] [example: false] |
Model StartFillingForm
The button the editor shows to begin filling out a form.
| Name | Type | Description | Notes |
|---|---|---|---|
| text | String | The caption to put on the button, already translated into the language of the caller. | [optional] [example: Start filling] [nullable] |
Model StartFillingMode
Possible values:
0— None (None)1— Share to fill out (ShareToFillOut)2— Start filling (StartFilling)3— Start filling form room (StartFillingFormRoom)
Model Status
Possible values:
0— Ok (Ok)1— Invalid (Invalid)2— Expired (Expired)3— Required password (RequiredPassword)4— Invalid password (InvalidPassword)5— External access denied (ExternalAccessDenied)
Model StorageFilter
Possible values:
0— None (None)1— Internal (Internal)2— ThirdParty (ThirdParty)
Model StringWrapper
The successful API response containing the string value.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | String | The string value returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model SubjectType
Possible values:
0— User (User)1— External link (ExternalLink)2— Group (Group)3— Invitation link (InvitationLink)4— Primary external link (PrimaryExternalLink)
Model SubmitForm
The Complete & Submit button settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| visible | Boolean | Specifies whether the Complete & Submit button will be displayed or hidden on the top toolbar. | [optional] [example: true] |
| resultMessage | String | A message displayed after forms are submitted. | [optional] [example: Form submitted successfully] [nullable] |
Model TemplatesConfig
One creation template offered in the editor. The portal no longer offers any, so this never appears in an editor configuration.
| Name | Type | Description | Notes |
|---|---|---|---|
| image | String | The absolute URL to the image for template. | [optional] [example: https://portal.example.com/templates/template1.png] [nullable] |
| title | String | The template title that will be displayed in the Create New... menu option. | [optional] [example: Blank Document] [nullable] |
| url | URI (uri) | The absolute URL to the document where it will be created and available after creation. | [optional] [example: https://portal.example.com/editor/new?template=blank] [nullable] |
Model TemplatesRequestDto
The files to put on the personal template list of the calling account.
| Name | Type | Description | Notes |
|---|---|---|---|
| fileIds | List (int32) | The files to put on the template list, by id, as reported by a folder listing such as GET api/2.0/files/{folderId}. Only a file stored in the portal itself can become a template, which is why an id here is always numeric. | [optional] [example: [1, 2, 3]] [nullable] |
Model ThirdPartyBackupRequestDto
The credentials and the title of the third-party storage account the portal writes its backups to.
| Name | Type | Description | Notes |
|---|---|---|---|
| url | String | The address of the storage server to connect to. It is needed by the WebDAV presets whose server is not known in advance (WebDav, Nextcloud, ownCloud), where it points at the WebDAV endpoint of that server, and by SharePoint; the presets with a fixed address and the OAuth services ignore it. | [optional] [example: https://cloud.example.com/remote.php/dav/files/admin/] [nullable] |
| login | String | The account name at the storage service, used by the services that authenticate by login and password. A login sent without a password is rejected as an invalid request. | [optional] [example: admin] [nullable] |
| password | String | The password, or the application password, for login at the storage service. Either this or token has to be sent, and the credentials are verified against the service before the account is saved. | [optional] [example: p@ssw0rd!] [nullable] |
| token | String | The OAuth 2.0 authorization code from the consent screen of Box, DropboxV2, GoogleDrive or OneDrive - not an access token: the portal exchanges the code for its own token and keeps that. The client ID and redirect URL the consent screen URL is built from come from GET api/2.0/files/thirdparty/capabilities. | [optional] [example: 4/0AY0e-g5Tn8vQrM2kZs7xB1pLd9] [nullable] |
| customerTitle | String | The name the backup account is shown under in the portal. Characters that a folder title cannot hold are replaced and the value is truncated; on the first connection a title that comes out of that empty is refused. | [optional] [example: Backup storage] [nullable] |
| providerKey | String | The storage service to connect, as the key of GET api/2.0/files/thirdparty/providers; the value is matched case-insensitively. Nextcloud and ownCloud are presets over WebDAV and are stored and reported back as WebDav. | [optional] [example: Nextcloud] [nullable] |
Model ThirdPartyParams
A third-party storage account connected to the portal.
| Name | Type | Description | Notes |
|---|---|---|---|
| auth_data | AuthData | The stored credentials of the account. They are not filled in here: the portal does not give back credentials once an account is saved. | [optional] |
| corporate | Boolean | Whether the account is attached to the legacy Common section, which is the case only for accounts inherited from an older portal. | [optional] [example: false] |
| roomsStorage | Boolean | Whether the account is attached to the Rooms section, room templates and the archive counted in. This is where POST api/2.0/files/thirdparty puts every account it connects. | [optional] [example: true] |
| customer_title | String | The name the account is shown under in the portal, as it was saved when the account was connected. | [optional] [example: Nextcloud storage] [nullable] |
| provider_id | Integer (int32) | The account ID to send to DELETE api/2.0/files/thirdparty/{providerId}, or as providerId to re-authenticate the account. | [optional] [example: 12] [nullable] |
| provider_key | String | The storage service behind the account. WebDav stands for every WebDAV preset, so it does not tell which of them was chosen when the account was connected. | [optional] [example: WebDav] [nullable] |
Model ThirdPartyParamsArrayWrapper
The successful API response containing the list of ThirdPartyParams objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of ThirdPartyParams objects returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model ThirdPartyRequestDto
The credentials and the title of a third-party storage account to connect or to re-authenticate.
| Name | Type | Description | Notes |
|---|---|---|---|
| url | String | The address of the storage server to connect to. It is needed by the WebDAV presets whose server is not known in advance (WebDav, Nextcloud, ownCloud), where it points at the WebDAV endpoint of that server, and by SharePoint; the presets with a fixed address and the OAuth services ignore it. | [optional] [example: https://cloud.example.com/remote.php/dav/files/admin/] [nullable] |
| login | String | The account name at the storage service, used by the services that authenticate by login and password. A login sent without a password is rejected as an invalid request. | [optional] [example: admin] [nullable] |
| password | String | The password, or the application password, for login at the storage service. Either this or token has to be sent, and the credentials are verified against the service before the account is saved. | [optional] [example: p@ssw0rd!] [nullable] |
| token | String | The OAuth 2.0 authorization code from the consent screen of Box, DropboxV2, GoogleDrive or OneDrive - not an access token: the portal exchanges the code for its own token and keeps that. The client ID and redirect URL the consent screen URL is built from come from GET api/2.0/files/thirdparty/capabilities. | [optional] [example: 4/0AY0e-g5Tn8vQrM2kZs7xB1pLd9] [nullable] |
| customerTitle | String | The name the connected account is shown under in the portal. Characters that a folder title cannot hold are replaced and the value is truncated, and a title that comes out of that empty is refused. | [required] [example: Nextcloud storage] [nullable] |
| providerKey | String | The storage service to connect, as the key of GET api/2.0/files/thirdparty/providers; the value is matched case-insensitively. Nextcloud and ownCloud are presets over WebDAV and are stored and reported back as WebDav. | [required] [example: Nextcloud] [nullable] |
| providerId | Integer (int32) | The account to re-authenticate instead of connecting a new one, as providerId of GET api/2.0/files/thirdparty; both a number and its decimal string form are accepted. For an account attached to the Rooms section only the credentials are applied, and its title and server address are kept. | [optional] [example: 12] [nullable] |
Model Thumbnail
Possible values:
0— Waiting (Waiting)1— Created (Created)2— Error (Error)3— Not required (NotRequired)4— Creating (Creating)
Model UpdateComment
The comment to store on one version of a file.
| Name | Type | Description | Notes |
|---|---|---|---|
| version | Integer (int32) | The version the comment belongs to, as reported by GET api/2.0/files/file/{fileId}/edit/history. A version that does not exist is rejected as an invalid request. | [required] [example: 1] [min: 1] [max: 2147483647] |
| comment | String | The note that explains what changed in that version, as the version history shows it. An empty text clears the note, and a longer one is cut rather than refused, so read the stored text from the answer. | [optional] [example: This is a comment] [minLength: 0] [maxLength: 255] [nullable] |
Model UpdateFile
The changes to make to a file: a new title, an earlier version to restore, or both.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The new title of the file, without an extension - the stored extension is kept whatever the title says, so a rename cannot change the format. Left empty, the file keeps its name. | [optional] [example: My Document] [minLength: 0] [maxLength: 165] [nullable] |
| lastVersion | Integer (int32) | The version to restore on top of the history, as reported by GET api/2.0/files/file/{fileId}/history; 0 or less leaves the versions untouched. | [optional] [example: 1] |
Model UpdateRoomGroupRequest
The changes to apply to a room group: a new name, rooms to attach and rooms to detach, in any combination.
| Name | Type | Description | Notes |
|---|---|---|---|
| roomsToAdd | List | The rooms to attach to the group, each given as a number for a room stored in the portal or as a string for a room on a connected third-party account. Every identifier has to name a room the caller can read; repeats and rooms the group already holds are collapsed rather than refused. | [optional] [example: [12, 15]] [nullable] |
| roomsToRemove | List | The rooms to detach from the group, in the same two forms. Detaching leaves the room and its content untouched, and a room the group already holds can be detached even when the caller has lost access to it in the meantime. | [optional] [example: [7]] [nullable] |
| groupName | String | The new name of the group, trimmed of surrounding spaces before it is stored. Leaving the member out keeps the current name, and a name that is blank once trimmed is refused. | [optional] [example: Client projects] [minLength: 0] [maxLength: 128] [nullable] |
Model UpdateRoomRequest
The fields of a room that a partial update changes.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The new name of the room. It is trimmed and sanitised the way a room title is at creation, and a blank or missing value leaves the current name alone rather than clearing it. | [optional] [example: Project Alpha] [minLength: 0] [maxLength: 170] [nullable] |
| quota | Long (int64) | The new storage limit of the room, in bytes. A value of -1 leaves the room with no limit of its own, any other negative value puts it back on the portal default, and a positive one is accepted only while the per-room quota feature is on. | [optional] [example: 1073741824] [nullable] |
| indexing | Boolean | Whether the room keeps a manual order of its contents. With it on every file and folder carries a position that listings follow and that PUT api/2.0/files/rooms/{id}/reorder compacts; with it off the contents are ordered by the sorting of the request. Turning it on renumbers the existing contents at once. | [optional] [example: true] [nullable] |
| denyDownload | Boolean | Whether members without editing rights are stopped from downloading and printing the contents of the room. They can still open the documents in the editor. | [optional] [example: true] [nullable] |
| lifetime | RoomDataLifetimeDto | How long files may stay in the room before they are deleted automatically. The countdown starts when the setting is saved, and leaving the field out keeps the files forever. Sending it with the switch off stops the automatic deletion. | [optional] |
| watermark | WatermarkRequestDto | The watermark drawn over documents opened in the room. Leaving the field out adds no watermark, and sending it with the switch turned off removes the one the room has. | [optional] |
| logo | LogoRequest | The picture to use as the room logo, named by the path that POST api/2.0/files/logos returned for an image uploaded beforehand, plus the crop to take from it. Leaving the field out keeps the room on its cover and colour. | [optional] |
| tags | List | The labels the room is to carry from now on. The list replaces the whole tag set rather than adding to it, an empty list clears it, and names the portal catalogue does not hold yet are added to it. | [optional] [example: [Finance, 2026]] [nullable] |
| color | String | The background colour the room is drawn with while it has no logo, as six hexadecimal digits with no leading number sign. An empty value restores the default colour of the room type. | [optional] [example: FF5733] [pattern: /^[0-9a-fA-F]{6}$/] [nullable] |
| cover | String | The picture drawn on the room while it has no logo, named by an identifier from GET api/2.0/files/rooms/covers. Any other value is rejected, and an empty value leaves the room without a cover. | [optional] [example: bookmark] [minLength: 0] [maxLength: 50] [nullable] |
| chatSettings | ChatSettings | The model and the prompt an AI room answers with. It belongs to AI rooms only and is rejected for a room of any other kind. | [optional] |
| sendFormToExternalDB | Boolean | For a form filling room, whether the data of every completed submission is also pushed to the external database configured for the portal. It is what POST api/2.0/files/rooms/{id}/externaldbsync re-runs for the forms already collected. | [optional] [example: false] [nullable] |
| saveFormAsXLSX | Boolean | For a form filling room, whether the collected submissions are also gathered into a spreadsheet stored next to the completed forms. With it off the submissions are kept only as the filled documents themselves. | [optional] [example: false] [nullable] |
Model UpdateRoomsQuotaRequestDtoInteger
The rooms whose storage limit is to be changed, and the limit to give them.
| Name | Type | Description | Notes |
|---|---|---|---|
| roomIds | List | The rooms to change, named by the identifiers that GET api/2.0/files/rooms reports. Only whole numbers are processed, so identifiers of rooms kept in a connected third-party account are skipped without an error. | [optional] [example: [1, 2, 3]] [nullable] |
| quota | Long (int64) | The storage each of the listed rooms may take, in bytes. It has to stay inside the portal own limit, and the per-room quota feature has to be on, otherwise nothing is changed. | [optional] [example: 10737418240] |
Model UpdateRoomsRoomIdsRequestDtoInteger
The rooms that are to go back to the default storage limit of the portal.
| Name | Type | Description | Notes |
|---|---|---|---|
| roomIds | List | The rooms to reset, named by the identifiers that GET api/2.0/files/rooms reports. Only whole numbers are processed, so identifiers of rooms kept in a connected third-party account are skipped without an error. | [optional] [example: [1, 2, 3]] [nullable] |
Model UpdateTagRequestDto
The parameters for renaming a custom room tag in the portal catalog.
| Name | Type | Description | Notes |
|---|---|---|---|
| oldName | String | The name of the tag to rename, matched against the catalog exactly as it is stored rather than searched for. Read the stored spelling from GET api/2.0/files/tags. | [required] [example: Confidential] [minLength: 0] [maxLength: 255] [nullable] |
| newName | String | The name to store instead. It has to be free: names are unique across the portal, so a name another tag already carries is refused, and merging two tags this way is not possible. | [required] [example: Restricted] [minLength: 0] [maxLength: 255] [nullable] |
Model UploadResultDto
The outcome of storing an image in temporary storage before it is used as a room logo.
| Name | Type | Description | Notes |
|---|---|---|---|
| success | Boolean | True when the image was stored and its path is in the data field. A rejected image is reported with an error response rather than with a false here, so this field is true in every answer that carries a body. | [optional] [example: true] |
| data | oas_any_type_not_mapped | [optional] [nullable] | |
| message | String | Left empty by this operation: nothing is reported here, and a refused image comes back as an error response instead. | [optional] [nullable] |
Model UploadResultWrapper
The successful API response containing the UploadResultDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | UploadResultDto | The UploadResultDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model UploadSessionResponseDtoInteger
How far a chunked upload has got, and the file it produced once the last byte has arrived.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The file the parts are being written into. An upload that took over a file of the same title carries it from the start, while an upload that creates a new file has nothing to name yet and reports 0 until the answer that sets uploaded to true. | [optional] [example: 1234] |
| folderId | Integer (int32) | The folder receiving the file. It is the folder the upload was reserved against, or the sub-folder created for it when the reservation declared a relative path. | [optional] [example: 10] |
| version | Integer (int32) | The revision the content is being written as: 1 for a file that did not exist, the next number when the upload took over a file of the same title, and the unchanged current number for an upload opened over an existing file, which replaces its content in place. | [optional] [example: 1] |
| title | String | The title the file is stored under, after characters a title cannot hold were replaced and, where a second copy was asked for, a numeric suffix was added - so it can differ from the name that was sent. | [optional] [example: Quarterly report.docx] [nullable] |
| providerKey | String | The third-party service holding the destination, such as GoogleDrive or OneDrive, and null for a folder stored on the portal itself. | [optional] [example: GoogleDrive] [nullable] |
| uploaded | Boolean | False while bytes are still missing, when the answer only reports progress; true in the answer that reports the stored file, which is also the answer that arrives with 201. | [optional] [example: false] |
| file | FileDtoInteger | The file as it stands. It is filled in both answers, but while uploaded is false it describes a file that has not been written yet, so its identifier, size and links are only worth reading once that flag turns true. | [optional] |
Model UploadSessionResponseIntegerWrapper
The successful API response containing the UploadSessionResponseDtoInteger object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | UploadSessionResponseDtoInteger | The UploadSessionResponseDtoInteger object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Model UserConfig
The account the editors attribute the changes of this session to.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The account the changes are recorded under. Two sessions carrying the same value are taken by the editors for the same person. | [optional] [example: 9924256b-447c-4f19-9dbd-8ad8c39e8ff5] [nullable] |
| name | String | The name shown next to the changes and in the list of participants. | [optional] [example: John Doe] [nullable] |
| image | String | An absolute address of the avatar shown for this participant. | [optional] [example: https://portal.example.com/storage/userphotos/9924256b_medium.png] [nullable] |
| roles | List | The filling roles this participant holds in the form being filled out. It is set only for a form in a virtual data room, where the role decides which fields open for them. | [optional] [example: [Manager]] [nullable] |
| customerId | String | Identifies the paying customer this participant belongs to, on deployments where the editors are licensed per customer. | [optional] [example: cust_001] [nullable] |
Model UserInfo
The user information.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | The user ID. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| firstName | String | The user's first name. | [optional] [example: John] [nullable] |
| lastName | String | The user's last name. | [optional] [example: Doe] [nullable] |
| userName | String | The user username. | [optional] [example: johndoe] [nullable] |
| birthDate | Date (date-time) | The user birthday. | [optional] [example: 1990-01-01T00:00:00Z] [nullable] |
| sex | Boolean | The user sex (male or female). | [optional] [example: true] [nullable] |
| status | EmployeeStatus | The user status. | [optional] [enum: 1, 2, 4, 5, 7] |
| activationStatus | EmployeeActivationStatus | The user activation status. | [optional] [enum: 0, 1, 2, 4] |
| terminatedDate | Date (date-time) | The date and time when the user account was terminated. | [optional] [example: 2025-12-31T23:59:59Z] [nullable] |
| title | String | The user title. | [optional] [example: Manager] [nullable] |
| workFromDate | Date (date-time) | The user registration date. | [optional] [example: 2020-01-15T00:00:00Z] [nullable] |
| String (email) | The user email address. | [optional] [example: john.doe@example.com] [nullable] | |
| contacts | String | The list of user contacts in the string format. | [optional] [example: skype:johndoe|telegram:@johndoe] [nullable] |
| contactsList | List | The list of user contacts. | [optional] [example: [skype:johndoe, telegram:@johndoe]] [nullable] |
| location | String | The user location. | [optional] [example: New York, USA] [nullable] |
| notes | String | The user notes. | [optional] [example: Additional information about the user] [nullable] |
| removed | Boolean | Specifies if the user account was removed or not. | [optional] [example: false] |
| lastModified | Date (date-time) | The date and time when the user account was last modified. | [optional] [example: 2025-02-08T10:30:00Z] |
| tenantId | Integer (int32) | The tenant ID. | [optional] [example: 1] |
| isActive | Boolean | Specifies if the user is active or not. | [optional] [example: true] |
| cultureName | String | The user culture code. | [optional] [example: en-US] [nullable] |
| mobilePhone | String | The user mobile phone. | [optional] [example: +1234567890] [nullable] |
| mobilePhoneActivationStatus | MobilePhoneActivationStatus | The user mobile phone activation status. | [optional] [enum: 0, 1] |
| sid | String | The LDAP user identifier. | [optional] [example: S-1-5-21-3623811015-3361044348-30300820-1013] [nullable] |
| ldapQouta | Long (int64) | The LDAP user quota attribute. | [optional] [example: 1073741824] |
| ssoNameId | String | The SSO SAML user identifier. | [optional] [example: johndoe@example.com] [nullable] |
| ssoSessionId | String | The SSO SAML user session identifier. | [optional] [example: _1a2b3c4d5e6f7g8h9i0j] [nullable] |
| createDate | Date (date-time) | The date and time when the user account was created. | [optional] [example: 2020-01-15T00:00:00Z] |
| createdBy | UUID (uuid) | The ID of the user who created the current user account. | [optional] [example: 00000000-0000-0000-0000-000000000000] [nullable] |
| spam | Boolean | Specifies if tips, updates and offers are allowed to be sent to the user or not. | [optional] [example: false] [nullable] |
| checkActivation | Boolean | Indicates whether the activation status of the employee or recipient is unchecked or inactive. Depending on the context, this property evaluates the activation or eligibility status accordingly. | [optional] [example: false] |
Model UserInvitation
Which pending room invitations are to be sent again.
| Name | Type | Description | Notes |
|---|---|---|---|
| usersIds | List (uuid) | The accounts to write to, taken from GET api/2.0/files/rooms/{id}/share. Anyone who has already joined, is not in the room, or is invisible to the caller is skipped without an error, and the field is ignored once every pending invitation is being resent. | [optional] [example: [e9a7b4c1-2d3f-4a56-8b90-1c2d3e4f5a6b]] [nullable] |
| resendAll | Boolean | Whether every invitation of the room that is still waiting is sent again. With it on the list of accounts is ignored, and with it off an empty list means that nothing is sent at all. | [optional] [example: false] |
Model VectorizationStatus
Possible values:
0— In Progress (InProgress)1— Completed (Completed)2— Failed (Failed)
Model WatermarkAdditions
Possible values:
1— User name (UserName)2— User email (UserEmail)4— User ip adress (UserIpAdress)8— Current date (CurrentDate)16— Room name (RoomName)
Model WatermarkDto
The watermark drawn over the documents of a room while they are viewed and printed.
| Name | Type | Description | Notes |
|---|---|---|---|
| additions | WatermarkAdditions | Which details of the reader and of the room are stamped alongside the text. The values combine, so a number that is not a member on its own is the sum of several of them, and 0 means that only the text is stamped. | [required] [enum: 1, 2, 4, 8, 16] |
| text | String | The fixed line drawn over the document, printed before the details selected alongside it. Empty when the room stamps an image instead. | [optional] [example: Confidential] [nullable] |
| rotate | Integer (int32) | How far the stamp is turned, in degrees, with negative values turning it anticlockwise and 0 drawing it horizontally. | [required] [example: -45] |
| imageScale | Integer (int32) | How large the image is drawn, as a percentage of its own size. It is 0 for a text watermark, where nothing is scaled. | [required] [example: 100] |
| imageUrl | String | The address the stamped picture is served from, inside the storage of the room. Empty for a text watermark. | [optional] [example: https://portal.example.com/storage/watermark_a1b2c3.png] [nullable] |
| imageHeight | Double (double) | The height the picture is drawn with, in pixels, kept together with the width so that the proportions survive. It is 0 for a text watermark. | [required] [example: 100.0] |
| imageWidth | Double (double) | The width the picture is drawn with, in pixels, kept together with the height so that the proportions survive. It is 0 for a text watermark. | [required] [example: 200.0] |
Model WatermarkOnDraw
The document watermark parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| width | Double (double) | Defines the watermark width measured in millimeters. | [optional] [example: 150] |
| height | Double (double) | Defines the watermark height measured in millimeters. | [optional] [example: 100] |
| margins | List (int32) | Defines the watermark margins measured in millimeters. | [optional] [example: [10, 10, 10, 10]] [nullable] |
| fill | String | Defines the watermark fill color. | [optional] [example: #FF0000] [nullable] |
| rotate | Integer (int32) | Defines the watermark rotation angle. | [optional] [example: 45] |
| transparent | Double (double) | Defines the watermark transparency percentage. | [optional] [example: 0.4] |
| paragraphs | List | The list of paragraphs of the watermark. | [optional] [example: [{align=2, runs=[{fill=[124, 124, 124], text=CONFIDENTIAL, fontSize=26}]}]] [nullable] |
Model WatermarkRequestDto
The watermark drawn over the documents of a room.
| Name | Type | Description | Notes |
|---|---|---|---|
| enabled | Boolean | Whether the room draws a watermark at all. Sending the object with this turned off removes the watermark the room has, and the rest of the fields are then irrelevant. | [optional] [example: true] [nullable] |
| additions | WatermarkAdditions | Which details of the reader and of the room are stamped into the watermark alongside the text. The values combine, so several of them can be added together to stamp more than one. | [optional] [enum: 1, 2, 4, 8, 16] |
| text | String | The fixed line drawn over the document, shown before the details selected alongside it. It is the whole watermark when no details are added. | [optional] [example: Confidential] [minLength: 0] [maxLength: 255] [nullable] |
| rotate | Integer (int32) | How far the watermark is turned, in degrees, with negative values turning it anticlockwise. Zero draws it horizontally across the page. | [optional] [example: -45] |
| imageScale | Integer (int32) | How large the watermark image is drawn, as a percentage of its own size. It applies to the image form of the watermark only. | [optional] [example: 100] |
| imageUrl | String | The picture to use instead of a text watermark, named by the path that POST api/2.0/files/logos returned for an image uploaded beforehand. The portal copies it into the room when the setting is saved. | [optional] [example: /temp/watermark_a1b2c3.png] [nullable] |
| imageHeight | Double (double) | The height the watermark image is drawn with, in pixels, used together with the width to keep its proportions. | [optional] [example: 100.0] |
| imageWidth | Double (double) | The width the watermark image is drawn with, in pixels, used together with the height to keep its proportions. | [optional] [example: 200.0] |
Model XlsxReportResponseDto
The answer to a report generation request: the queued task, the form whose answers are collected, and whether the report file is being created or refreshed.
| Name | Type | Description | Notes |
|---|---|---|---|
| form | FileDtoInteger | The original form the answers are collected from. It is not the produced spreadsheet - that one arrives with the task, once the task reports completion. | [optional] |
| task | DocumentBuilderTaskDto | The queued generation. Poll it with GET api/2.0/files/file/{fileId}/xlsx until it reports completion, and take the produced file from it then. | [optional] |
| isNewFile | Boolean | True when this run creates the report file, false when an existing report is rewritten in place, which means it keeps its id and the links already shared for it. | [optional] [example: true] |
Model XlsxReportResponseWrapper
The successful API response containing the XlsxReportResponseDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | XlsxReportResponseDto | The XlsxReportResponseDto object returned by the operation. | [optional] |
| count | Integer (int32) | The total number of items in the response | [optional] |
| links | List | List of links related to the response | [optional] |
| status | Integer (int32) | HTTP status code of the response | [optional] |
| statusCode | Integer (int32) | HTTP status code of the response (duplicate of status) | [optional] |
Authorization
cookieAuth
- Type: API key
- API key parameter name: asc_auth_key
- Location:
bearerAuth
- Type: HTTP Bearer Token authentication
asc_auth_key
- Type: API key
- API key parameter name: asc_auth_key
- Location:
Basic
- Type: HTTP basic authentication
Bearer
- Type: HTTP Bearer Token authentication (JWT)
ApiKeyBearer
- Type: API key
- API key parameter name: ApiKeyBearer
- Location: HTTP header
OAuth2
- Type: OAuth
- Flow: accessCode
- Authorization URL:
- Scopes:
- read: Read access to protected resources
- write: Write access to protected resources
OpenId
x-signature
- Type: API key
- API key parameter name: x-signature
- Location: